Вставить текстовое поле в пункт меню - PullRequest
3 голосов
/ 12 января 2011

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

  • сохранить изменения в путевой точке
  • создать новую путевую точку на основе ввода

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

Есть только одна проблема: куда вставить точку маршрута?Мой ответ - это раскрывающееся меню кнопки «Сохранить как новое», содержащее следующие пункты меню:

  • в качестве первой точки пути Плана полета
  • до выбранной промежуточной точки
  • послевыбранная промежуточная точка
  • в качестве последней конечной точки плана полета
  • в позиции указателя

Последний пункт является сложным.Индексная позиция должна быть введена пользователем, и я хотел бы избежать всплывающего окна, запрашивающего только одно значение.

Моя идея такова: встроить текстовое поле в пункт меню.

Возможен ли этот подход в QT или wxWidgets?Что вы думаете о дизайне GUI?

С уважением, Арне

PS: обратите внимание, что это все на стадии разработки.Группа даже не решила использовать каркас графического интерфейса: Qt или wxWidgets.

Ответы [ 2 ]

3 голосов
/ 13 января 2011

Ваш подход вполне осуществим в QT.Вы можете иметь элементы управления \ виджеты в качестве элементов QMenu, используя QWidgetAction .Ниже приведен пример:

QPushButton *button = new QPushButton("test button", this);
QMenu *menu = new QMenu(button);
QLineEdit *edit = new QLineEdit(menu);
QAction *action0 = new QAction("menu item", this);
QWidgetAction *action1 = new QWidgetAction(menu);

button->setMenu(menu);
action1->setDefaultWidget(edit);

menu->addAction(action0);
menu->addAction(action1);

надеюсь, это поможет, с уважением

0 голосов
/ 20 января 2011

Это определенно невозможно с любым родным API Mac OS X, поэтому нет, это невозможно с любым официальным API wxWidgets (хотя это может быть с wxFlatMenuBar).

В любом случае, если вы планируете выпуститьв OSX (как предполагается, поскольку вы рассматриваете wx или qt), вы действительно должны знать, что ваши пользователи OSX будут презирать вас за то, что вы поместили элемент управления вводом текста в меню, к которому оно не относится.Ваши пользователи Windows будут гораздо более снисходительными.Я призываю вас не торопиться, чтобы придумать лучший, более стандартный дизайн пользовательского интерфейса для этого действия, я гарантирую, что есть один.

...