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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 12
1  Qt / Вопросы новичков / Текущая раскладка клавиатуры : Июль 03, 2020, 14:59
Здравствуйте.

Можно ли средствами Qt выяснить, какой язык ввода использует пользователь в данный момент?
Можно ли средствами Qt получить список языков, которые установлены для ввода на данном компьютере?
Переключить язык ввода программно было бы супер, но, наверное, это за пределами возможностей Qt? Или можно?
Можно ли получать в программе сигнал, когда пользователь меняет язык ввода, то есть, к примеру, переключается с русского языка на английский?
2  Qt / Вопросы новичков / Re: Статическая сборка 5.14 , сохранение юникода в файле : Июль 01, 2020, 11:31
Цитировать
что-то многовато

Половина в приложении не используется, остается 50.

открой свой экзэшник в программе dependency walker — он покажет требуемые длл

Спасибо, попробую!
3  Qt / Вопросы новичков / Re: Рисование QPainter и форма .ui главного окна : Июль 01, 2020, 11:29
1. а этот виджет хотя бы отображается?
2. правой кнопкой на добавленный виджет — promote to — вписать свой класс
3. можно повесить виджет поверх лейбла и в нем рисовать

Заработало. Оказывается, в layout-е виджет попадал в слепую зону, уползал за пределы окна.
Мысль наложить область поверх картинки отличная. Унаследовал от QLabel, задал геометрию картинки, очень удобно.
Спасибо!
4  Qt / Вопросы новичков / Re: Статическая сборка 5.14 , сохранение юникода в файле : Июнь 30, 2020, 19:09
Подсчитал объем .dll библиотек в папке компилятора bin, в сумме 110 мегабайт. Если это все, что нужно для запуска приложения на другой машине, то супер.
5  Qt / Вопросы новичков / Рисование QPainter и форма .ui главного окна : Июнь 30, 2020, 19:02
Здравствуйте.

В программе имеется форма главного окна, там масса виджетов - таб бар, в каждой вкладке кнопки, поля, чекбоксы и прочее... Все это богатство было на скорую руку создано в Qt Creator-е. Возникла необходимость разместить в одной из вкладок объект рисования - линии, прямоугольники и все такое прочее... Был создан класс Keyboard, дочерний от QWidget, в котором был переопределен метод paintEvent. Объект был создан вручную, в конструкторе MainWindow, а в ui такого объекта нет. Если сделать его centralWidget, все работает и рисуется. Когда запихиваю в один из лейаутов формы, виджета на экране нет и обращений к его paintEvent не происходит.

Код:
// keyboard.cpp

void Keyboard::paintEvent(QPaintEvent * event)
{
    Q_UNUSED(event);
    QPainter p; // Создаём новый объект рисовальщика
    p.begin(this);

    p.setRenderHint(QPainter::Antialiasing, true);
    p.setPen(QPen(Qt::red, 25, Qt::DotLine)); // Настройки рисования
    p.drawLine(0, 0, width(), height()); // Рисование линии

    ...

    p.end();
}

// mainwindow.cpp

...
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent) , ui(new Ui::MainWindow)
{
    ...  
    keys = new Keyboard();
    this->setCentralWidget(keys); // Так работает. Когда не делаю главным окном, а добавляю в verticalLayout (3 строчки ниже), не работает.
    //keys->resize(200,200);
    //ui->verticalLayout->addWidget(keys);
    //keys->show();  
    ...
}

Вопрос 1: В чем загвоздка?! (Давным-давно писал программу с рисованием и все работало, но исходников не осталось)

Вопрос 2: Как добавить потомка QWidget (с переопределенным обработчиком события рисования) в форму .ui?

Вопрос 3: В одну из QLabel (элемент формы .ui) из файла ресурсов подгружается картинка .jpg, в том же конструкторе MainWindow. Картинка грузится прекрасно. Было бы неплохо дорисовать кое-что поверх картинки, но не меняя исходное изображение. То есть по умолчанию пользователь видит оригинальную картинку, время от времени - по мере его действий - на картинке появляются стрелки, фигуры и надписи, а потом исчезают. В потомке QLabel тоже будет переопределен метод обработчика paintEvent, и в зависимости от состояния свойств либо что-то будет дорисовываться, либо не будет. Как сделать так, чтобы картинка не перекрывала рисование и как производный ่от QLabel объект добавить в форму .ui?
6  Qt / Вопросы новичков / Re: Статическая сборка 5.14 , сохранение юникода в файле : Июнь 24, 2020, 12:45
Наверное вы добавили библиотеки только тех объектов, которые были использованы в программе. У меня так много всего, что придется долго отбирать, что использовано а что нет.
В соответствии с LGPL лицензией, я, кажется, должен буду добавить к демке не только библиотеки, но и исходники Qt. Мне бы хотелось запихнуть все в один исполняемый файл. Демка не для всеобщего обозрения, а будет высылаться по запросу, в ответ на проявленный интерес. Так что вопросы о нарушении лицензии в данном случае вряд ли уместны... Демка абсолютно бесплатна, а платной версии программы не существует и вряд ли она появится раньше, чем будет куплена коммерческая версия Qt.
7  Qt / Вопросы новичков / Re: Статическая сборка 5.14 , сохранение юникода в файле : Июнь 24, 2020, 09:30
Всем спасибо за советы, пошел ковыряться...  Улыбающийся
8  Qt / Вопросы новичков / Re: Статическая сборка 5.14 , сохранение юникода в файле : Июнь 24, 2020, 09:29
1. Ничего не надо собирать, особенно статиком, "нарушая" lgpl. Качаешь (если еще нет) 32 битный бинарник- исталлятор, ставишь, компеляешь как обычно
1.1 Собираешь дистр (либы и немного плагинов) в каталог приложения и используя Inno Setup делаешь инсталлятор



Да, так можно. Я так делал 3 года назад с какой-то из 5-х версий, но получится пакет размером 1.5 гиг.  Грустный А при статической компиляции (правда, на 4-ке) получился экзешник 20 мегабайт со всеми нужными либами внутри + несколько мелких файлов.
9  Qt / Вопросы новичков / Статическая сборка 5.14 , сохранение юникода в файле : Июнь 23, 2020, 12:16
Здравствуйте!
Давным-давно не пользовался Qt, и вот опять возникла необходимость... Возникло 2 вопроса общего характера.

1) Как установить/настроить Qt для создания демки, чтобы потом без проблем упаковать релиз каким-нибудь бесплатным инсталлятором и демка запустилась на других машинах? В комплекте должны быть все необходимые файлы. Подключены multimedia, sql, core и виджеты. Имеется ресурсный файл с картинками и звуками. Текущая версия Qt - 5.14.2, 64 бита, MinGW. В целях максимальной совместимости хотелось бы собрать в 32-битном виде.

2) Демка написана для тайских пользователей, в ней много текста на тайском. Интерфейс на тайском, и много тайского текста в базе данных. Интерфейс работает замечательно, но есть процедура, экспортирующая базу в файл. Она создает обычный текстовый файл, скидывает туда строчки базы, и вместо тайских символов в файле сохраняются знаки вопроса. Как сохранить переменные QString (юникод) в текстовом файле? Желательно как читабельный текст, но можно и в бинарном виде.
10  Qt / Вопросы новичков / Среда разработки C++/Qt под андроид : Июль 24, 2018, 20:01
Здравствуйте.
Существует ли сабж? Хочу написать небольшое приложение для планшета, притом писать хочу на самом планшете.
11  Разное / Говорилка / Re: Работа : Март 14, 2017, 16:01
плюс еще можно искать предложения, где технология не указана, т.е. можно использовать че хочешь

Logo например...  Смеющийся
Еще вопрос на засыпку... найти долгоиграющую удаленку с частичной занятостью можно только на биржах?
Если можно как-то еще, как договариваются, если работаешь из другой страны?
Скилы - C-лайк языки (C++, C#, Java, PHP etc), Qt, SQL, Андроид, iOS и т.д.
12  Qt / Вопросы новичков / Re: Запуск приложения на другом ПК(Qt 5.7.0) : Март 13, 2017, 23:53
Статическая сборка 5.7.1, поставил и радуюсь.
https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW
Проги запускаются везде и отовсюду, весят по 15-50 мегабайт и ничего не просят.
При этом все работает - виджеты, QML, XML, мультимедия, сеть, база...
13  Программирование / Общий / Re: Подобные имена : Март 11, 2017, 07:12
Хэширование подстрок всех имен (1-й символ имени, 2 первых символа имени, 3 первых символа имени   ...  все символы имени).
При выборе любого объекта, даже если их миллиард, будет легко расставить элементы противоположного массива в порядке максимального соответствия. Полное соответствие - отлично, на символ меньше - хуже, и т.д. Если соответствие достигнуто по длине левого слова, но правые слова длиннее, то чем больше лишних символов справа, тем хуже.
Результаты хранить в словаре (QSet), словарь для каждого массива, индекс - строка, значение - вектор из указателей на объекты или номеров строк в файле.

Пример: xxxxxxx:Linda1, 27 строка в файле
Добавляем 27 в вектор по индексу L
Добавляем 27 в вектор по индексу Li, если индекса нет, создаем...
И так до Linda1.

Отсечь имя можно регулярным выражением "^.+[^a-zA-Z0-9]([a-zA-Z0-9]+)\s*$"
14  Qt / Базы данных / Re: где лучше выполнять QSqlQuery, на сервере или на клиенте? : Март 11, 2017, 01:47
Если я правильно понял структуру вашего ПО, клиентская часть может преобразовывать запросы в формат QSqlQuery или же отправлять as is на сервер.
Рациональный путь, кмк, комбинационный - предварительный запрос о текущей нагрузке на сервер. Если сервер не загружен, работа достается ему (клиентские машины должны грузиться по-минимуму). Если сервер загружен, придется грузить работой клиентские машины.
15  Qt / Вопросы новичков / Re: VS 2015 Community + Qt 5.8 Статическая сборка, помогите : Март 10, 2017, 18:10
Upd.
Проект Qt нашелся. Создал пробный, пустой, для проверки, с QMainWindow. Не запускается (не собирается).
В соответствии с видеоинструкцией добавил в свойствах проекта пути к заголовкам (qtbase/include) и библиотекам (qtbase/lib + qtbase/plugins/platforms), в настройках линкера, верхняя строчка, добавил файлы

opengl32.lib
imm32.lib
Ws2_32.lib
Qt5PlatformSupport.lib
qwindows.lib

Согласно той же инструкции, добавил две строки в myclass.cpp
Код:
#include "myclass.h"

#include <QtPlugin> // ДОБАВЛЕНО
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) // ДОБАВЛЕНО

MyClass::MyClass(QWidget *parent)
: QMainWindow(parent)

Результат - 178 ошибок линковщика (ссылка на неразрешенный внешний символ, Qt5Core.lib, Qt5Gui.lib, Qt5Widgets.lib, qwindows.lib и т.д.)
Несколько для примера:
Код:
1>Qt5Widgets.lib(qwindowsxpstyle.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__IsAppThemed@0 в функции "public: __thiscall QWindowsXPStylePrivate::QWindowsXPStylePrivate(void)" (??0QWindowsXPStylePrivate@@QAE@XZ)
1>Qt5Widgets.lib(qwindowsxpstyle.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetCurrentThemeName@24 в функции "public: virtual void __thiscall QWindowsXPStyle::drawPrimitive(enum QStyle::PrimitiveElement,class QStyleOption const *,class QPainter *,class QWidget const *)const " (?drawPrimitive@QWindowsXPStyle@@UBEXW4PrimitiveElement@QStyle@@PBVQStyleOption@@PAVQPainter@@PBVQWidget@@@Z)
1>Qt5Widgets.lib(qwindowsvistastyle.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetThemeTransitionDuration@24 в функции "public: virtual void __thiscall QWindowsVistaStyle::drawControl(enum QStyle::ControlElement,class QStyleOption const *,class QPainter *,class QWidget const *)const " (?drawControl@QWindowsVistaStyle@@UBEXW4ControlElement@QStyle@@PBVQStyleOption@@PAVQPainter@@PBVQWidget@@@Z)
1>qwindows.lib(qwindowsintegration.obj) : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall QWindowsFontDatabase::QWindowsFontDatabase(void)" (??0QWindowsFontDatabase@@QAE@XZ) в функции "public: virtual class QPlatformFontDatabase * __thiscall QWindowsIntegration::fontDatabase(void)const " (?fontDatabase@QWindowsIntegration@@UBEPAVQPlatformFontDatabase@@XZ)
1>qwindows.lib(qwindowsintegration.obj) : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl QWindowsFontDatabase::fontSmoothingGamma(void)" (?fontSmoothingGamma@QWindowsFontDatabase@@SANXZ) в функции "public: virtual class QVariant __thiscall QWindowsIntegration::styleHint(enum QPlatformIntegration::StyleHint)const " (?styleHint@QWindowsIntegration@@UBE?AVQVariant@@W4StyleHint@QPlatformIntegration@@@Z)
1>qwindows.lib(qwindowsintegration.obj) : error LNK2019: ссылка на неразрешенный внешний символ "public: static void __cdecl QWindowsFontDatabase::setFontOptions(unsigned int)" (?setFontOptions@QWindowsFontDatabase@@SAXI@Z) в функции "public: __thiscall QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(class QStringList const &)" (??0QWindowsIntegrationPrivate@@QAE@ABVQStringList@@@Z)
1>qwindows.lib(qwindowsintegration.obj) : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall QBasicFontDatabase::populateFontDatabase(void)" (?populateFontDatabase@QBasicFontDatabase@@UAEXXZ)"

В связи с чем закономерные вопросы:
1) Что нужно исправить, чтобы все заработало?
2) Где прописать пути/файлы в VS, чтобы не приходилось прописывать их в каждом новом проекте для релиза и дебага? Тот же вопрос по поводу двух добавленных в код myclass.cpp строчек.
Предполагается, что эта сборка прослужит минимум пару лет. Помогите пожалуйста настроить! Заранее спасибо!
Страниц: [1] 2 3 ... 12

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