我通过制作 QAction 并向其添加 QMenu 在 QToolBar 上有一个菜单。如何消除单击图标时出现菜单之前的延迟?
QToolBar *myToolBar = new QToolBar(this);
QAction *myAction = new QAction(helloIcon, tr("Hello"), this);
myToolBar->addAction(myAction);
helloMenu = new QMenu(this);
QAction *actionWorld = helloMenu->addAction(tr("World"));
QAction *actionUniverse = helloMenu->addAction(tr("Universe"));
myAction->setMenu(helloMenu);
正确的方法是自己在工具栏中插入一个 QToolButton 而不是 QAction。 QToolButton 类有一个 popupMode 属性,您可以在其中设置所需的模式(延迟、即时弹出、菜单)。
这是一个工作示例:
QToolBar *myToolBar = new QToolBar(this);
QToolButton *myButton = new QToolButton();
QMenu *helloMenu = new QMenu(this);
QAction *actionWorld = helloMenu->addAction(tr("World"));
QAction *actionUniverse = helloMenu->addAction(tr("Universe"));
//set popup mode to InstantPopup so there will be no delay
myButton->setPopupMode(QToolButton::InstantPopup);
myButton->setMenu(helloMenu);
myButton->setIcon(helloIcon);
myButton->setText(tr("Hello"));
myToolBar->addWidget(myButton);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)