Art*_*lif 2 c++ qt contextmenu qplaintextedit
这是我右键单击QPlainTextEdit后的上下文菜单。我想添加功能以从Context Menu 中的文件加载数据。我可以吗?如何?
方法一: QPlainTextEdit::contextMenuEvent
您应该覆盖QPlainTextEdit::contextMenuEventQt 文档中提到的:
Run Code Online (Sandbox Code Playgroud)void MyQPlainTextEdit::contextMenuEvent(QContextMenuEvent *event) { QMenu *menu = createStandardContextMenu(); menu->addAction(tr("My Menu Item")); //... menu->exec(event->globalPos()); delete menu; }
您可以将QAction::triggered信号连接到您的方法(槽)以加载数据,或者您可以使用QMenu::addAction重载之一,这允许您直接指定槽。
如果你不想子类化QPlainTextEdit(覆盖contextMenuEvent),你可以在 Qt 中使用事件过滤。
请注意,contextMenuEvent()仅在contextMenuPolicy未设置(或设置为其默认值Qt::DefaultContextMenu)时调用
方法二: QWidget::customContextMenuRequested
作为替代方案,您可以使用 Qt 的信号和槽机制在用户请求时创建上下文菜单。
该contextMenuPolicy属性应设置为Qt::CustomContextMenu,在这种情况下,QWidget::customContextMenuRequested只要用户请求上下文菜单,就会调用该信号。这个信号应该连接到你自己的插槽,它应该创建上下文菜单,如上面的代码(方法 1)所示。
使用MyQPlainTextEditQt设计师
要MyQPlainTextEdit在.ui文件中使用您的文件,您应该将其实现为提升文件QPlainTextEdit并在您的.ui文件中使用它而不是常规的QPlainTextEdit. 有关更多信息,请参阅Qt 文档。
为了能够在 Qt 设计器中使用您的类,您不应忘记实现一个接受父类的构造函数,如示例中QWidget所做的那样。请注意,实现这样的构造函数总是一个好主意,因为 Qt 通常通过子父关系来管理所有权。AnalogClock
| 归档时间: |
|
| 查看次数: |
2832 次 |
| 最近记录: |