从QWidget检索QPushButton

时间:2015-11-19 20:27:51

标签: c++ qt qpushbutton

我有一个带相关图标的QPushButton,我将它添加到场景中:

QPushButton *button = new QPushButton;
button->setIcon(QIcon(myIcon));
buttonWidget = detail->scene()->addWidget(button);
// buttonWidget is declared globally and is a QGraphicsProxyWidget*

稍后,在其他功能中,仍然可以访问buttonWidget。如何从QPushButton检索buttonWidget对象?我想改变它的图标。

2 个答案:

答案 0 :(得分:2)

也许您可以使用QGraphicsProxyWidget::widget获取基础QWidget*,然后使用dynamic_cast转换为QPushButton*

QPushbutton *otherButton = dynamic_cast<QPushButton*>(buttonWidget->widget());

答案 1 :(得分:2)

您可以使用QGraphicsProxyWidget::widget将对象检索为QWidget,然后转换为QPushButton

但是我建议让QPushButton成为你班级的一个属性(总是比投射更好)。然后,您可以在以后随时访问它。

button = new QPushButton; // declare button as an attribute of your class in the header file
button->setIcon(QIcon(myIcon));
buttonWidget=detail->scene()->addWidget(button);