Как разработать линейную программу с графическим интерфейсом - PullRequest
0 голосов
/ 13 мая 2009

Я делаю простое приложение на Qt. Имеет 4 экрана / страницы:

  1. Начать импорт
  2. Выберите папку для импорта изображений в
  3. Принимать или отклонять каждое изображение в папке, и когда не осталось изображений:
  4. «Не осталось изображений» и кнопка «ОК».

Я не могу найти лучший способ реализовать это. Я начал с QWidget, но это быстро стало неуправляемым.

QWizard слишком ограничен?

РЕДАКТИРОВАТЬ: Часть проблемы с QWizard, кажется, всегда есть кнопки «Назад» и «Далее». Я не хочу использовать эти опции в этой программе, так что это заставляет меня поверить, что волшебник - не совсем то, что мне нужно.

Ответы [ 4 ]

5 голосов
/ 14 мая 2009

Я собираюсь немного не согласиться с использованием QWizard здесь. Это было бы довольно легко сделать, но в этом случае я думаю, что было бы проще просто использовать QStackedWidget и поменять местами отображаемый виджет в зависимости от того, что вы хотите, чтобы пользователь мог делать. В любом случае, это, вероятно, то, что делается внутри QWizard, без каких-либо сложностей для запуска кнопок и перемещения вперед и назад. Возможно, вы также захотите взглянуть на материал конечного автомата, который они ожидают добавить в ближайшее время, поскольку ваше приложение может быть легко разделено на состояния.

5 голосов
/ 13 мая 2009

Я думаю, QWizardPage - ваша лучшая ставка.

Вы можете отключить «назад» на QWizardPage, используя setCommitPage(True) на нем.

Вам также придется переопределить nextId для «переменного» количества QWizardPages, которое вы хотите между шагами 2 и 4.

1 голос
/ 13 мая 2009

здесь (основной) и здесь являются примерами QWizards.

Вы можете создать QWizardPages для своих экранов и добавить их в QWizard. С помощью registerField () вы можете зарегистрировать поля для связи между страницами.

EDIT: Я не проверял это, но я думаю, что вы можете контролировать расположение кнопок QWizard с помощью setButtonLayout

0 голосов
/ 14 мая 2009

Создайте диалог с кнопкой «Начать импорт» вверху. Когда пользователь нажимает это:

Заполните QFormLayout:

Макет должен иметь флажок, а метка - это имя картинки для импорта. Я не уверен в ваших требованиях, но вы также можете отобразить эскиз изображения.

Пользователь просто проверяет нужные ему изображения.

Тогда внизу есть кнопка «Сохранить ...». Когда пользователь нажимает эту кнопку, появляется диалоговое окно «Сохранить как». Вы сохраняете все проверенные изображения, отбрасываете остальные.

Если изображений нет, измените текст кнопки «Сохранить ...» на «ОК» и отобразите QLabel со строкой «Нет изображений» Вы можете переключаться между QLabel и QFormLayout, используя QStackedWidget.

Оформить заказ на 1022 *: http://doc.trolltech.com/qq/qq25-formlayout.html

Опция: избавиться от кнопки «Начать импорт». Приложение должно автоматически заполнять QFormLayout при запуске (возможно, в конструкторе, если это достаточно быстро).

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