如何以编程方式设置QMenu项目的焦点



我想用这段代码做的是以编程方式将焦点设置在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项不像其他小部件那样"可聚焦"。事实上,他们不应该这样做,因为你想要的并不是他们常用的用法。

作为一种解决方法,在鼠标按下时,您可以获得鼠标光标位置,预先计算弹出菜单中默认菜单项的偏移量,并在鼠标光标位于默认菜单项下方的位置显示菜单。这个方案是在这里提出的。

另外,对于用户来说,选择默认菜单项可以在显示弹出窗口后生成窄键按钮事件。

相关内容

  • 没有找到相关文章

最新更新