1

我有一个按钮,以这种方式分配给QDialog

QPushButton *button = ui->buttonBox->button(QDialogButtonBox::StandardButton::Ok);

作为一个孩子,我如何从 QDialog 中获得它?

我想使用:

parentWidget->findChild<QPushButton*>(QDialogButtonBox::StandardButton::Ok);

findChild<T>需要一个QString。

有什么建议么?

4

2 回答 2

2

先通过对象名获取buttonBox,然后就可以获取到你想要的按钮了:

QDialogButtonBox* buttonBox = dialog.findChild<QDialogButtonBox*>("buttonBox");
if (buttonBox)
{
    QPushButton* btn = buttonBox->button(QDialogButtonBox::Ok);
    if (btn)
    {
        qDebug() << "Find it!";
    }
}
于 2021-09-08T05:37:07.027 回答
2

findChild通过对象名查找 Qt 对象。您必须首先使用以下方法为您的按钮指定一个对象名称:

setObjectName(const QString &name)

请参阅此处的文档。

于 2021-09-08T05:46:08.850 回答