Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно организовать программу, Нужны советы 
V
    Опции темы
deniska
Дата 23.10.2014, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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(наверное, не очень разобрался в различиях, но этот вроде последний пока)
Извиняюсь за "многа букав". 
Спасибо.
PM MAIL ICQ   Вверх
bsa
Дата 12.11.2014, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Вообще-то, ты можешь создать у каждого потока свои сигналы, а окошки привязать к ним. В итоге содержимое окошек будет меняться сразу после изменения данных в потоке. Если же у тебя данные меняются очень часто (чаще 60 раз в секунду), то тогда единственный выход - опрос по таймеру. В качестве таймера не обязательно использовать QTimer. Можно воспользоваться и QWidget::setTimer/killTimer/timerEvent.
PM   Вверх
deniska
Дата 20.11.2014, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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 после такого... 




PM MAIL ICQ   Вверх
Amp
Дата 21.11.2014, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



В последнее время у меня складывается ощущение, что эта технология в основном ориентирована на мобильный мир. Я не видел серьезных десктопных приложений на QML. Более того, я вообще кроме демок не видел приложений на QML, разве что KDE (но это немного из другой оперы). Хотя судя по мейллистам, люди что-то где-то пишут на нем smile Я все ждал, вдруг кто поделится своим опытом в этой теме. 

945GM поддерживает только OpenGL 1.4, поэтому получить ускорение в случае с QtQuick можно будет только через Angle.

Хочешь зрелую и обкатанную технологию для нестандартных интерфейсов - бери WPF.
PM MAIL   Вверх
deniska
Дата 21.11.2014, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 1.7.2005
Где: Троицк

Репутация: нет
Всего: 0



Amp,  вот я вчера этот пост написал, посидел, подумал... действительно похоже что придется пощупать WPF...

Цитата

945GM поддерживает только OpenGL 1.4, поэтому получить ускорение в случае с QtQuick можно будет только через Angle.

а Angle не работает под WinXp, правильно? выходит замкнутый круг в случае моих исходных данных.

просто в случае с Qt хотел оставить себе возможность "мигрировать" с винды в будущем.

спасибо!
PM MAIL ICQ   Вверх
Amp
Дата 23.11.2014, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Цитата(deniska @  21.11.2014,  14:39 Найти цитируемый пост)
а Angle не работает под WinXp, правильно? выходит замкнутый круг в случае моих исходных данных.

Да, судя по всему забили они на поддержку Windows XP.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.