Qt QToolBar get按钮添加addAction
Qt QToolBar get button added by addAction
在Qt中当我们使用函数addAction
的时候QToolBar
:
_LastBar->addAction(QtExtensions::Action(name, icon, func));
我们如何检索为该操作生成的 QToolButton
?
或者,如果这不可能,如何找到 QToolBar
的最后一个 button/widget?
我发现以下方法听起来很有希望:QToolbar::widgetForAction()
。
QToolbar::addAction()
return 是一个 QAction*
和创建的 QAction
实例的指针。此指针与 QToolbar::widgetForAction()
一起使用,并且应该 return 对应 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.
QToolButton
return 与 QAction
相同的标签 – 这应该算作证据。
在Qt中当我们使用函数addAction
的时候QToolBar
:
_LastBar->addAction(QtExtensions::Action(name, icon, func));
我们如何检索为该操作生成的 QToolButton
?
或者,如果这不可能,如何找到 QToolBar
的最后一个 button/widget?
我发现以下方法听起来很有希望:QToolbar::widgetForAction()
。
QToolbar::addAction()
return 是一个 QAction*
和创建的 QAction
实例的指针。此指针与 QToolbar::widgetForAction()
一起使用,并且应该 return 对应 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.
QToolButton
return 与 QAction
相同的标签 – 这应该算作证据。