我发现以下方法听起来很有前途:
QToolbar::widgetForAction()
这个
QToolbar::addAction()
返回一个
QAction*
QAction
实例。此指针用于
并应返回相应的
QWidget*
. 知道这应该是一个
QToolButton
dynamic_cast<QToolButton*>
不应该失败的。
为了验证这一点,下面的MCVE
testQToolBarAddAction.cc
#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
:
SOURCES = testQToolBarAddAction.cc
QT = widgets
编译和测试
cygwin
$ qmake-qt5 testQToolBarAddAction.pro
$ make
$ ./testQToolBarAddAction
Qt Version: 5.9.4
QToolbutton::label: "Click Me"
Clicked.
这个
–这应该算是证据。