我想要一个没有孩子的菜单项。我有一个 QMenubar,在这个菜单栏中有一个 QMenu。要将其用作菜单,我必须将 QActions 放入其中,如果我单击 QMenu,它们就会出现。只有菜单,没有任何 QAction,怎么可能像 QAction 一样执行操作呢?
一种解决方法是拥有一个工具箱并将其伪装成菜单,但这会带来几个问题:
那么您想要一个无需打开子菜单即可触发操作的菜单栏吗?
尝试直接将 QActions 添加到菜单栏,而不是在中间添加 QMenu:
#include <QtWidgets>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QMainWindow *wnd = new QMainWindow;
QMenuBar *m = new QMenuBar;
QAction *a = new QAction("DoIt");
QObject::connect(a, &QAction::triggered, [wnd](){
QMessageBox::information(wnd, "DoIt", "DoIt");
});
m->addAction(a);
wnd->setMenuBar(m);
wnd->show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以子类化 QMenu 并处理 mousePressEvent 方法以发出信号
归档时间: |
|
查看次数: |
3425 次 |
最近记录: |