c++ - 获取选定的菜单项

标签 c++ qt qpushbutton qmenu

我正在我的应用程序中的按钮 (QPushButton) 上实现运行时菜单,用户在单击上传按钮时必须在 ftp 和 http 之间做出选择。

QMenu menu(this); 
menu.addAction("ftp");
menu.addAction("http");
ui.mUploadBtn->setMenu(&menu);
ui.mUploadBtn->showMenu();

我的问题是我怎么知道用户选择了哪个选择或者他们有什么功能可以得到那个。

谢谢

最佳答案

捕获菜单结果的一种方法是这样做:

 QAction* action = menu.exec(QCursor::pos());

然后就可以使用了

action->text()==QString("ftp")

了解用户是否点击了“FTP”。

正如 Frank Osterfeld 在评论中所说,您还可以在您的类(class)中创建一个插槽,并将菜单触发 Action 信号连接到它:

connect(&menu, SIGNAL(triggered(QAction*)), this, SLOT( sl_OnMenuTriggered(QAction* )));

void sl_OnMenuTriggered(QAction* _action)
{
if(_action->text()=="ftp") ...
}

这就是“非阻塞”方式。

关于c++ - 获取选定的菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228592/

相关文章:

c++ - 链表迭代器实现 C++

c++ - 如何将函数作为参数传递给transform()函数?

python - 使用 pyside 初始化一个空白的 QImage

c++ - Qpushbutton 上的圆形图标

python - 具有 3 个不同选项的按钮

python - PyQt5 GUI 运行没有错误,但不出现窗口

c++ - 自定义 QCompleter 奇怪的行为

c# - 如何在 C# 和 C++ 代码之间共享常量?

python - child 大小改变后缩小 parent 小部件

qt - 如何在 QML 中模拟 C 风格的 "ifdef"宏?