首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QToolBar get按钮由addAction添加

Qt QToolBar get按钮由addAction添加
EN

Stack Overflow用户
提问于 2018-09-05 08:38:01
回答 1查看 2.9K关注 0票数 4

在Qt中,当我们使用QToolBar的函数QToolBar

代码语言:javascript
复制
_LastBar->addAction(QtExtensions::Action(name, icon, func));

我们如何检索为该操作生成的QToolButton

或者,如果不可能,如何找到QToolBar的最后一个按钮/小部件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-05 08:58:38

我发现了以下听起来很有前途的方法:QToolbar::widgetForAction()

QToolbar::addAction()返回一个QAction*,指针指向创建的QAction实例。此指针与QToolbar::widgetForAction()一起使用,并应返回相应的QWidget*。知道这应该是一个QToolButton,我们可以应用一个不应该失败的dynamic_cast<QToolButton*>

为了检查这一点,下面的MCVE testQToolBarAddAction.cc

代码语言:javascript
复制
#include <QtWidgets>

int main(int argc, char **argv)
{
  qDebug() << "Qt Version:" << QT_VERSION_STR;
  QApplication app(argc, argv);
  QToolBar qToolBar;
  QAction *pQAction = qToolBar.addAction(
    "Click Me", [](bool) { qDebug() << "Clicked."; });
  QToolButton *pQToolBtn
    = dynamic_cast<QToolButton*>(qToolBar.widgetForAction(pQAction));
  qDebug() << "QToolbutton::label:" << pQToolBtn->text();
  qToolBar.show();
  return app.exec();
}

testQToolBarAddAction.pro

代码语言:javascript
复制
SOURCES = testQToolBarAddAction.cc

QT = widgets

cygwin上编译和测试

代码语言:javascript
复制
$ qmake-qt5 testQToolBarAddAction.pro

$ make

$ ./testQToolBarAddAction 
Qt Version: 5.9.4
QToolbutton::label: "Click Me"
Clicked.

QToolButton返回与QAction相同的标签--这应该算作证据。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52180738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档