簡體   English   中英

如何以編程方式將重點放在QMenu項上

[英]How to set focus on QMenu Item programmatically

我要用這段代碼來做的事情是通過編程將重點放在QMenu項上。 但是QMenu::setActiveAction()QMenu::popup()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項與其他窗口小部件相同,因此無法“聚焦”。 而且,實際上,它們不應該這樣做,因為您想要的不是使用它們的常見做法。

作為一種解決方法,在按下鼠標時,您可以獲取鼠標光標的位置,在彈出菜單中預先計算默認菜單項的偏移量,並在該點處顯示菜單,鼠標光標位於默認菜單項的下方。 該解決方案建議在這里

同樣,對於用戶來說,更好的選擇是默認菜單項,您可以在顯示彈出窗口后生成窄鍵按鈕事件。 這適用於Windows,但不能確定是否適用於其他操作系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM