![]() |
|
![]() ![]() ![]() |
|
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
Здравствуйте. Есть приложение, написанное на VC++. Интерфейс его уже сейчас нестандартный, + поддерживается 2 языка (пока).
Программу нужно дорабатывать (много новых окон с большим количеством элементов в них) и еще хотелось бы иметь возможность на будущее всяких штук типа анимаций при переходе от окна к окну, анимированное перемещение элементов в окнах. Люди советовали WPF попробовать, но мне хочется все-таки сначала попробовать Qt+Qml, поскольку если звезды сойдутся, то получится соскочить с винды. итак, сейчас приложение представляет из себя что-такое: 1. есть несколько рабочих потоков, работающих с разнотипными устройствами. 2. В потоке GUI есть окно-подложка, которое виднО всегда (на нем всякие индикаторы общего состояния системы). при старте программы имеем поверх подложки некое меню, а далее в зависимости от действия пользователя появляются другие окна, а предыдущие закрываются. 3.1 В этих окнах отображаются данные, получаемые из рабочих потоков(меняются иконки на кнопках, текст в полях ввода, статический текст) 3.2 также в этих окнах задаются параметры, передаваемые в рабочие потоки (эти параметры должны задаваться в разрешенном диапазоне с заранее известным шагом изменения) 4. в окне из п.2 реализован обычный оконный таймер, в обработчике которого забираются данные из рабочих потоков. Остальные окна уведомляются о том что данные получены и им пора бы обновить состояние своих элементов. ну а теперь собственно вопросы по этим пунктам: 1. рабочие потоки организуем через QThread. 2. организуем С++ класс модели данных, который будет читать данные из потоков и уведомлять текущие окна об обновлении (если оно необходимо). 3.1 Кажется это нужно реализовывать как-то согласно этой доке. Кто должен отвечать, за то, какое qml окно должно появится вместо предыдущего в результате действий пользователя? С++ Модель или Qml-ный вид? 3.2 как задать элементам QML диапазон и шаг изменения величины? В текущем проекте я делал на каждую такую переменную структуру, в которой в полях все эти параметры описывал. Тут также?(регистрировать тип данных и передавать в qml? как?) 4. в С++ классе модели данных напрашивается QTimer? В догонку вопросик: почему-то QML-Designer не отображает всевозможные поля для редактирования выделенного элемента (ну например, цвет заливки окна или цвет текста кнопки) и приходится в текстовом режиме руками эти вещи вписывать, поскольку при добавлении элемента в окно эти параметры не прописываются. Это у всех так или у меня что-то не так настроено? Если у всех, то в чем сокральный смысл, не давать пользователю менять максимальное количество параметров мышкой? плюс без доков и не знаешь, можно ли вообще менять те или иные параметры... ПС: Qt 5.3.2 QtCreator 3.2.1 QML 2.3(наверное, не очень разобрался в различиях, но этот вроде последний пока) Извиняюсь за "многа букав". Спасибо. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Вообще-то, ты можешь создать у каждого потока свои сигналы, а окошки привязать к ним. В итоге содержимое окошек будет меняться сразу после изменения данных в потоке. Если же у тебя данные меняются очень часто (чаще 60 раз в секунду), то тогда единственный выход - опрос по таймеру. В качестве таймера не обязательно использовать QTimer. Можно воспользоваться и QWidget::setTimer/killTimer/timerEvent.
|
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
Спасибо за совет.
Столкнулся вот с какой проблемой. Небольшой тест соорудил с Qt5.3.2 VS2013 и все это время пытался провернуть deploy на целевой комп WinXP с довольно старой встроенной видюхой, видимо OpenGL2.0 не поддерживает. angle версия Qt не подходит под XP, перешел на OpenGL... в общем не работает пример на целевом компе... консоль программы выдает ошибки по функциям gl*. почитал, что вроде как проблема с OpenGL, более новых дров для видяхи этой нет (Mobile Intel 945 chipset family). тупик? ПС вообще ощущения после месяца неспешных потуг, проб Qt+Qml, такие: Creator не стабилен, несколько раз падал. На более ранних версиях не замечал такого, может потому что использовал раньше для проекта QWidgets в основном VS редактор deploy - целая песня. совет 1 - скопировать в отдельную папку всевозможные зависимости, а потом удалять лишнее. после удаления каждого модуля - запускать программу то что есть разные варианты (angle opengl) лично я узнал только когда уперся в ограничения с XP опять же про специальные ключи для сборки под ХР тоже явно не указано. в общем както стремно начинать довольно большой проект на Qt после такого... |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
В последнее время у меня складывается ощущение, что эта технология в основном ориентирована на мобильный мир. Я не видел серьезных десктопных приложений на QML. Более того, я вообще кроме демок не видел приложений на QML, разве что KDE (но это немного из другой оперы). Хотя судя по мейллистам, люди что-то где-то пишут на нем
![]() 945GM поддерживает только OpenGL 1.4, поэтому получить ускорение в случае с QtQuick можно будет только через Angle. Хочешь зрелую и обкатанную технологию для нестандартных интерфейсов - бери WPF. |
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
Amp, вот я вчера этот пост написал, посидел, подумал... действительно похоже что придется пощупать WPF...
а Angle не работает под WinXp, правильно? выходит замкнутый круг в случае моих исходных данных. просто в случае с Qt хотел оставить себе возможность "мигрировать" с винды в будущем. спасибо! |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |