我想在我的弹出菜单中有一个行编辑字段。我基本上是让用户从几种常见尺寸中选择一种,但我希望他们能够输入自定义尺寸作为菜单中的最后一个条目。
所以我有这样的东西(从较大的代码中截取,new_menu 是感兴趣的菜单):
QWidget *widget = new QWidget(new_menu);
QHBoxLayout *layout = new QHBoxLayout;
QLineEdit* le = new QLineEdit;
le->setPlaceholderText("Custom");
le->setFixedWidth(100);
ayout->addWidget(le);
widget->setLayout(layout);
QWidgetAction* wa = new QWidgetAction(new_menu);
wa->setActionGroup(group);
wa->setDefaultWidget(widget);
new_menu->addAction(wa);
connect(le, SIGNAL(returnPressed()), this, SLOT(leslot()));
效果很好,LineEdit
显示很好,在菜单中居中,它有占位符文本,我可以点击它并编辑,一切。但是,当我在 上按 Enter 键时textBox
,它会发出returnPressed
信号,并且菜单会发出triggered
带有列表中其他操作之一的信号,所以充其量我要更改我的配置两次,最坏的情况是事情会中断。
此外,当我单击边缘LineEdit
(尽管仍在菜单中,但不在可编辑区域中)时,菜单会发出QWidgetAction
与其相关联的触发信号,这不是我想要的。
所以有两个问题:
1)我能以我想要的方式获得回报吗?如果菜单在被点击时关闭,那很好,但它也不能发出另一个动作。
2)我可以让它在lineEdit
单击时根本不发出动作吗?