如何在Qt Designer(1.3)中创建上下文菜单?当然,我希望能够在不编写任何代码的情况下创建它!
如何在Qt Designer(1.3)中创建上下文菜单?当然,我希望能够在不编写任何代码的情况下创建它!
在Qt Designer中,您需要完成两个步骤,并在表单构造函数中添加几行代码:
将您的小部件的contextMenuPolicy
设置为ActionsContextMenu
。
使用操作编辑器选项卡创建操作。
对于您在Qt Designer中创建的每个操作,请在表单构造函数中添加以下行:ui->yourwidget->addAction(ui->youraction);
我可以建议一种方法,让您手动编写几行通用代码,然后仅使用Qt Creator为表单上的任意数量组件添加上下文菜单。例如,我们在表单上有三个组件:QLabel lbl1、QPushButton btn1和QTextEdit ed1。我们需要为每个组件添加自己的上下文菜单。要做到这一点:
myContextMenuHandler(QPoint)
插槽添加到表单(QMainWindow)中。void MainWindow::myContextMenuHandler(QPoint pt)
{
QMenu *mnu = ui->menuPopupMenus->findChild<QMenu *>("menu" + sender()->objectName());
if (mnu)
mnu->popup(dynamic_cast<QWidget *>(sender())->mapToGlobal(pt));
}
每个项目都必须有其自己的子项集,这些子项将显示为相应组件的上下文菜单(例如,“lbl1”项目将具有“Item1”,“Item2”和“Item3”子项;“btn1” - “Item4”和“Item5”;“ed1” - “Item6”)。
customContextMenuRequested(QPoint)
信号连接到表单的 myContextMenuHandler(QPoint)
槽。contextMenuPolicy
属性设置为 "CustomContextMenu"。ui->menuPopupMenus->menuAction()->setVisible(false);
你唯一能做的就是设置contextMenuPolicy,但我怀疑这不是你要找的。