在菜单项中嵌入文本框

时间:2011-01-12 08:36:00

标签: qt qt4 wxwidgets

这是一个概念证明问题。我正在为飞行模拟应用程序中的空中交通参与者的路点编辑设计GUI。在当前概念中,所选择的航点的参数以一堆文本框显示。此输入掩码既可以作为数据视图,也可以作为编辑掩码。编辑字段后,用户可以:

      
  • 保存对路点的更改   
  • 根据输入创建新的航点

如果只需要为新路点更改某些参数子集,此设计可避免重新输入数据。

只有一个问题:在哪里插入路点?我的答案是“另存为新”按钮上的下拉菜单,其中包含以下菜单项:

      
  • 作为飞行计划的第一个方向点   
  • 选定路线点之前   
  • 选定的路点后   
  • 作为最后一个飞行计划点   
  • 在索引位置

最后一项是棘手的。索引位置需要由用户输入,我想避免弹出窗口只询问单个值。

我的想法是这样:在菜单项中嵌入一个文本框。

这种方法在QT或wxWidgets中是否可行?您如何看待GUI设计?

此致 ·阿尔

PS:请注意,这一切都处于概念阶段。该小组甚至没有决定使用GUI框架:Qt或wxWidgets。

2 个答案:

答案 0 :(得分:3)

您的方法在QT中完全可行。您可以使用QWidgetAction将control \ widgets作为QMenu项目。以下是一个例子:

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);

希望这有帮助,尊重

答案 1 :(得分:0)

对于任何Mac OS X本机API来说,这绝对是不可能的,所以不,不可能使用任何官方的wxWidgets API(尽管可能是wxFlatMenuBar)。

无论哪种方式,如果您计划在OSX上发布(假设您正在考虑使用wx或qt),您真的应该知道您的OSX用户会鄙视您在菜单上放置文本输入控件它不属于。您的Windows用户将更加宽容。我建议你花点时间为这个动作提出一个更好,更标准的UI设计,我保证那里有一个。