Russian Qt Forum
Март 29, 2024, 04:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3
1  Qt / Вопросы новичков / Re: Русский язык в qt. Как локализировать выполнения функций. : Июнь 24, 2020, 13:52
литерал работает только с константами. в данном случае у тебя будет просто QString:
Код
C++ (Qt)
auto rusStr = fd.getSaveFileName();
Таким способом русские буквы опять будут выводиться саша так. Просто дальше, у меня будет выводится путь в лейбле, этим rusStr. И из него будет браться текст в стринговую переменную, чтобы с текстом можно было манипулировать. Текст будет переводится в const char*, чтобы он для _mkdir подошёл из #include <direct.h>, для создания папки. Однако стринговая переменная, которая хранит путь с именем, будет идти дальше по коду, чтобы в файловых потоках, файлы создавались в этой новой папке. Всё ломается, чисто, когда пользователь вводит русские символы или путь до папки имеет русские буквы.
2  Qt / Вопросы новичков / Re: Русский язык в qt. Как локализировать выполнения функций. : Июнь 24, 2020, 00:31
а зачем такая конструкция, если вот тут https://doc.qt.io/qt-5/qfiledialog.html говорят что по другому делается. Зачем преобразовывать QString? все ОС поддерживают utf8, зачем такой изврат?
Чтобы не было вот такого Название.txt.
3  Qt / Вопросы новичков / Re: Русский язык в qt. Как локализировать выполнения функций. : Июнь 23, 2020, 20:07
А как быть в случае если используется QFileDialog ?
Код:
QFileDialog fd;
auto rusStr = QStringLiteral(fd.getSaveFileName());
Жалуется на fd, что скобки не закрыл.

По идеи, такая конструкция, вызовет диалоговое окно, в котором пользователь укажет путь сохранения.
Переменная должна его запомнить с русскими словами и дальше её можно пихать в обработки.
4  Qt / Вопросы новичков / Re: Русский язык в qt. Как локализировать выполнения функций. : Июнь 14, 2020, 14:33
по-моему тебе уже неоднократно говорили изучать С++ Улыбающийся https://en.cppreference.com/w/cpp/language/auto
Да, я учу си++ и qt. Но кроме как посмотреть все видюшки с ютуба и тыкаться в документации, иного способа кроме как задавать свои вопросы на форумах и везде в надежде что ответят, у меня нету. Потому что документации слишком гиганские, а видюшки с ютуба не полные, даже англоязычные.

Вот, благодаря ВАААС, я победил чуды и знать, что такое тип данных auto. На самом деле, меня убило. что существует фигня, которая определяет тип за тебя, с другой стороны, нафига? В любом случае, обрабатывать переменную, по её типу придётся. Я бы даже сказал, благодаря этой фигне. можно будет запутаться, а какой же тип присвоила эта auto. Я так понимаю, тут она присвоила Qstring?
5  Qt / Вопросы новичков / Re: Русский язык в qt. Как локализировать выполнения функций. : Июнь 13, 2020, 11:58
сохраняй исходный файл в кодировке UTF-8 и проблем с русскими словами в коде не будет:
Код
C++ (Qt)
auto rusStr = QStringLiteral("привет");
Так, ну применилась эта штука удачно. Только вот, что такое auto? Это тип данных?
6  Qt / Вопросы новичков / Русский язык в qt. Как локализировать выполнения функций. : Июнь 13, 2020, 07:20
Искал локализейт для qt и нашёл две строчки, одна из которых по идеи делает setlocate для qt, а вторая, ну просто для проверки.
Я сделал из этого кнопку, которая заменяет лэйбл на фразу во второй строчке. Но к сожалению, как была каша из символов, так и остаётся.
Сразу скажу, что мне локализация нужна, например чтобы считывать с полей русские слова, используя их как название будущего файла, переваривать в путь и формат файла(собственно это делать я знаю как, но попытка ввести русское слово в поле, собственно не переварит всё что написано на кириллице(получится какой нибудь D/file/СѓСЃСЃРєРёР№.txt).
Насколько я понял, не переваривание происходит уже тогда, когда мы берём и записываем в string'овую переменную с любого лейбла или поля(то есть и весь остальной функционал, кроме вставок в саму программу, то есть в редакторе форм/действий) будет искажён.
Я бы хотел чтобы Любые считывания или записи могли делаться на русском.
Код:
#include <QTextCodec>
void MainWindow::on_pushButton_2_clicked()
{
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251")); //Найденные
    QString cyrillicName = QString::fromLocal8Bit("словоНаКириллице");                   //строчки
    ui->label->setText(cyrillicName);
}
7  Qt / Вопросы новичков / Re: Как проверить, пуста ли EditLine? : Июнь 12, 2020, 21:20
Мне просто нужно, когда пользователь в первый раз нажимал на это поле с него стиралось фраза "Введите название"
с этого и надо было начинать Улыбающийся это называется placeholder: https://doc.qt.io/qt-5/qlineedit.html#placeholderText-prop
Так, эта штука делает текст серым и как бы не существующем. На всякий случай хочу уточнить: Если пользователь не будет менять текст в этом лайнэдите, то этот текст будет считываться как обычно(то есть как введённый текст)?
8  Qt / Вопросы новичков / Re: Открытие/загрузка файла. : Июнь 12, 2020, 17:59
И какие функции там использовать, их довольно много.
Может еще и мамину сисю дать? Не пытайтесь "на шару", читайте букварь
А может тогда форум с вопросами новичков удалить, а вместо него поставить табличку "читайте букварь"?

Окей, я разобрался. В чём была проблемма, просто написать: добавьте библиотеку <QFileDialog>, создайте объект его класса и примените к нему метод getOpenFileName(). А остальные методы ищите по вот сылке.
9  Qt / Вопросы новичков / Re: Как проверить, пуста ли EditLine? : Июнь 12, 2020, 17:33
И что этот рабочий пример делает? Насколько я понял, добавляет виджет, но судя по h файлу, виджет мышки которая может удалять.
Цитировать
Рабочий пример:

lineed.h:
Код
C++ (Qt)
#ifndef LINEED_H
#define LINEED_H
 
#include <QtWidgets>
 
class LineEd : public QLineEdit {
 
protected:
   virtual void mousePressEvent(QMouseEvent*) {
       clear();
   }
 
public:
   LineEd(QWidget *wgt = 0) : QLineEdit(wgt) {}
 
};
 
#endif // LINEED_H
 

main.cpp:
Код
C++ (Qt)
#include <QtWidgets>
#include "lineed.h"
 
int main(int argc, char** argv) {
 
   QApplication app(argc, argv);
   QWidget      wgt;
 
   LineEd *LnEd = new LineEd;
 
   QVBoxLayout* vLayout = new QVBoxLayout;
   vLayout->addWidget(LnEd);
   wgt.setLayout(vLayout);
 
   wgt.show();
 
   return app.exec();
 
}
 

Мне просто нужно, когда пользователь в первый раз нажимал на это поле с него стиралось фраза "Введите название". Естественно. я надеялся, что в момент нажатия на поле ввода, посылается сигнал. что поле стало активным, что с ним начали работать или что то в этом духе, чтобы потом слотом сделать settext(""); и всё.
Не понимаю, что даёт переопределение mouseЕvent'a.
10  Qt / Вопросы новичков / Re: Открытие/загрузка файла. : Июнь 12, 2020, 12:57
И какие функции там использовать, их довольно много.
11  Qt / Вопросы новичков / Открытие/загрузка файла. : Июнь 12, 2020, 12:11
Во многих программах(например:paint), есть такая кнопка "открыть файл", после её нажатия, выпрыгивает проводник, который просит пользователя найти нужный файл. Собственно, как сделать такую кнопку?
12  Qt / Вопросы новичков / Как проверить, пуста ли EditLine? : Май 29, 2020, 23:46
У меня есть поле, в которое по умолчанию записано число. Пользователь удаляет число, пока его не станет. Собственно, когда его нету, я бы хотел делать проверку, на пустое поле.
Код:
static string x;
    x=ui->lineEdit->text().toStdString();
if(x==?????)
А вообще, в случае. если у меня число в поле по умолчанию есть, а я хочу, чтобы при наведении на поле и нажатию по нему, текст исчезал, это какой сигнал?(понятно, что после этого, можно просто ui->settext(""); сделать).
Проверка нужна чтобы после этого, пользователь может ввести в поле, что нибудь ещё, передумать, стереть и написать ещё раз.
13  Qt / Вопросы новичков / Re: Вывод сообщения в графический интерфейс из другого файла. : Май 25, 2020, 18:14
Ты вызываешь из MainWindow свободную функцию, которая не имеет доступа к этому MainWindow. Сделай one  членом класса MainWindow или передавай в one указатель на MainWindow
Код
C++ (Qt)
void one (MainWindow *w) {
 w->vivod_na_ekran(10);
}
..........
one(this)
 
Да, с указателем, сработало. Спасибо.
14  Qt / Вопросы новичков / Re: Вывод сообщения в графический интерфейс из другого файла. : Май 25, 2020, 16:44
А зачем ты делаешь MainWindow vivod? Что-то мне кажется, что у тебя опять напутано все в плане c++. Приведи минимальный полный код.
Это и есть минимальный полный код.
Больше только весь код.
но там добавить нечего.

код кнопки:
Код:
void MainWindow::on_pushButton_clicked()
{
   one();
}

Код метода, который выводит переменную.
Код:
void MainWindow::vivod_na_ekran(int i){
    ui->label->setText(QString::number(i));
}

Код вызывающей функции:
Код:
#include "mainwindow.h"
#include <math.h>

#include <iostream>
using namespace std;

#include "four.h"
#include <stdlib.h>

void one(){
    int i=12;
    MainWindow *vivod = new MainWindow;
    vivod->vivod_na_ekran(i);
    //vivod->show();
    }

.h
Код:
#ifndef FOUR_H
#define FOUR_H
void one();
#endif // FOUR_H

Просто, выводится цифра, на подменённом экране, не закрывая старого даже. А проблема в том, что через подмену экрана я не могу реализовать. У меня внутри функции будет, что то типо счётчика загрузки.



15  Qt / Вопросы новичков / Re: Вывод сообщения в графический интерфейс из другого файла. : Май 25, 2020, 15:41
Просто поменяй свой код на вот этот и проверь:
Код:
void one(){
    int i=0;
    MainWindow *vivod = new MainWindow;
    vivod->vivod_na_ekran(i);
    vivod->show();
}

Ну, в этом случае, появляется второй экран, который перегораживает первый, не позволяя с ним что либо делать.
Если убрать vivod->show(), то останется обычный экран, на котором изменение текста не происходит.
Страниц: [1] 2 3

Страница сгенерирована за 0.145 секунд. Запросов: 23.