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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: проектирование пользовательского интерфейса  (Прочитано 9632 раз)
qt_newer
Гость
« : Июль 15, 2014, 14:42 »

Надо сделать приложение для виндоуз эмбеддед. Много форм (у всех есть заголовок, 2 кпонки внизу), в этих формах различные элементы управления, например, текст ареа, инпут бокс и т.п. Сказали, что так как надо экономить время-память, все делать в одной форме, динамически меняя элементы в ней. Классы надо спроектировать соответственно для элементов управления (включающие валидатор, установку стиля, изменение значений и т.п.) Посоветуйте, пжл, какие-нибудь примеры подобного, или просто идеи, не знаю, как подойти к делу Грустный
Записан
qt_newer
Гость
« Ответ #1 : Июль 15, 2014, 15:23 »

работать должно на QT 4.8 (max), т.е. без QML
Записан
Susenin
Новичок

Offline Offline

Сообщений: 35


Просмотр профиля
« Ответ #2 : Июль 15, 2014, 16:13 »

Расскажите подробнее, что конкретно не понятно?

Пока такие советы:
1. Максимально отделить GUI от логики работы программы (ядра). GUI должен быть незатейливым проводником сигналов  между пользователем и ядром.
2. Возможно, требования к программе еще не до конца сформировались и будут меняться по ходу разработки программы. Надо предусмотреть эту возможность.  Если вы создадите динамическое изменение компонентов на одной форме, вас ждет много боли, когда требования к GUI будут меняться.
Пишите программу со стандартным подходом, не запариваясь на экономию памяти и остального. Вот когда напишете, протестируете, тогда и будете оптимизировать GUI. У вас
это легко получится, ведь вы GUI хорошо отделили от ядра по моему первому совету  Смеющийся
Записан
qt_newer
Гость
« Ответ #3 : Июль 15, 2014, 16:53 »

Спасибо за ответ, но начальство говорит заморачиваться, значит заморачиваться Грустный
Это мой первый проект на кьют (знания чисто теоретические), а программа уже существует на другой платформе (чужая, кода у меня нет)- просто перевести надо, начав с ГУИ.
Не понятно, как правильно сделать динамическое изменение элементов и классы спроектировать. Приложение выглядит примерно так: выбор режима просмотра- режим 1- ввод данных- ввод след. данных, возврат на главную страницу,
режим 2- ввод- проверка, изменение фона на красный для неверных данных- снятие отпечатков и т.п. и т.д. Много, много форм- переход между ними туда-обратно, еще куда-то в середину Улыбающийся
Т.е. ответ, например, использовать QtStackedWidget, сделать несколько страниц с кнопками внизу и менять у них надписи, слоты по ходу дела (только как пример!).
Классы для кнопки, инпут бокса, текст ареа и т.п. создам, надеюсь, самостоятельно Улыбающийся
Записан
Bepec
Гость
« Ответ #4 : Июль 15, 2014, 17:12 »

Не страдайте геморроем Улыбающийся

Делать полностью динамический интерфейс можно, но это приведёт к перерасходу времени, нервов и денег.
Одна правка и у вас полетит всё/вся и вы будете страдать в прямом смысле этого слова.
Разделите всё на формы. Потом формы создавайте динамически на главном виджете. Вот и весь сказ.

PS а если говорят что "память сбережёт", то думать люди не умеют. Если сделать "наслаивающийся интерфейс", то он всегда будет в памяти. А динамически подгружаемые формы только в момент пользования Улыбающийся

Записан
qt_newer
Гость
« Ответ #5 : Июль 15, 2014, 17:29 »

даа, а мне-то как не хочется этим заниматься. Вариант "создать форму и удалить ее сразу после использования" был предложен мной первым, в ответ было сказано, что будет медленно. (целевое устройство совсем слабенькое). Про "наслаивающийся интерфейс" не знаю, м.б. имелось в виду, что каждый элемент управления создается, удаляется по мере использования (гмм, и на это тоже время идет ?)
Записан
Susenin
Новичок

Offline Offline

Сообщений: 35


Просмотр профиля
« Ответ #6 : Июль 15, 2014, 20:14 »

Вариант "создать форму и удалить ее сразу после использования" был предложен мной первым, в ответ было сказано, что будет медленно. (целевое устройство совсем слабенькое).
Сделайте тестовое приложение, две насыщенные формы. Поочереди их создавайте, показывайте и удаляйте. Замерьте время. Будут хоть какие-то данные.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Июль 15, 2014, 20:24 »

Т.е. ответ, например, использовать QtStackedWidget, сделать несколько страниц с кнопками внизу и менять у них надписи, слоты по ходу дела (только как пример!).
Ну а почему бы и нет? Чем это "сложнее" расхристанных "форм" (какое мерзкое слово) у которых одинаковые эл-ты? Или просто так - ругать глупость начальства = хороший тон?  Улыбающийся
Записан
Bepec
Гость
« Ответ #8 : Июль 15, 2014, 20:56 »

Чем гибче система, тем больше в ней ошибок и тем страшнее последствия каждой Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #9 : Июль 15, 2014, 21:05 »

Чем гибче система, тем больше в ней ошибок и тем страшнее последствия каждой Улыбающийся
Ерунда.
Записан
_OLEGator_
Гость
« Ответ #10 : Июль 15, 2014, 21:07 »

Чем гибче система, тем больше в ней ошибок и тем страшнее последствия каждой Улыбающийся
Полный бред.
Записан
Bepec
Гость
« Ответ #11 : Июль 15, 2014, 21:08 »

А чем вы руководствовались когда писали 2 последние реплики? Если без грамотной архитектуры гибкая система, то это капец. А тут как раз такой случай.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #12 : Июль 15, 2014, 21:10 »

А чем вы руководствовались когда писали 2 последние реплики? Если без грамотной архитектуры гибкая система, то это капец. А тут как раз такой случай.
Без грамотной архитектуры гибкой системы не получиться, ну никак. Улыбающийся
Записан
_OLEGator_
Гость
« Ответ #13 : Июль 15, 2014, 21:14 »

А чем вы руководствовались когда писали 2 последние реплики? Если без грамотной архитектуры гибкая система, то это капец. А тут как раз такой случай.
А чем ты руководствуешься, когда пишешь такие утверждения? Эпоха монолитных приложений уже давно прошла, а рукожопие и гибкость - разное.
Записан
Bepec
Гость
« Ответ #14 : Июль 15, 2014, 21:42 »

Цитировать
Чем гибче система, тем больше в ней ошибок и тем страшнее последствия каждой

Вот моё утверждение Улыбающийся Скажите ещё, что в монолитном больше ошибок будет Улыбающийся Чем гибче, тем больше сценариев. Чем больше сценариев - больше обработчиков. Больше обработчиков - больше ошибок. По статистике Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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