[英]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.