gpt4 book ai didi

c++ - 如何以编程方式将焦点设置在 QMenu Item 上

转载 作者:太空宇宙 更新时间:2023-11-04 14:08:22 25 4
gpt4 key购买 nike

我想用这段代码做的是以编程方式将焦点设置在 QMenu 项上。但是 QMenu::setActiveAction()QMenu::popup() 都不起作用。我该怎么做?

#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>

int main(int argc, char **argv)
{
QApplication app(argc, argv);
QMainWindow *window = new QMainWindow();

window->setWindowTitle(QString::fromUtf8("Test:QMenu"));
window->resize(336, 227);

QAction *newAct = new QAction("&New",window);
QAction *openAct = new QAction("&Open",window);
QAction *saveAct = new QAction("&Save",window);

QMenu *fileMenu;

fileMenu = window->menuBar()->addMenu("&File");
fileMenu->addAction(newAct);
fileMenu->addAction(openAct);
fileMenu->addAction(saveAct);

window->show();

fileMenu->popup(QPoint(10,10));

return app.exec();
}

最佳答案

QMenu 项目不像其他小部件那样“可聚焦”。而且,实际上,它们不应该,因为您想要的不是它们的常见用法。

作为解决方法,在按下鼠标时您可以获得鼠标光标位置,预先计算弹出菜单中默认菜单项的偏移量,并在鼠标光标位于默认菜单项下方的位置显示菜单。建议使用此解决方案 here .

此外,对于用户来说,选择默认菜单项会更好,您可以在显示弹出窗口后生成窄键按钮事件。这适用于 Windows,但不确定是否适用于其他操作系统。

关于c++ - 如何以编程方式将焦点设置在 QMenu Item 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15967426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com