从 QWidget 中获取 QPushButton

Retrieving QPushButton from QWidget

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

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

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

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

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

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

但我建议让 QPushButton 成为你的 class 的一个属性(总是比转换更好)。然后您以后可以随时访问它。

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