如何使用枚举获取 QDialog 的子项(访问按钮)?

How do I get a child of a QDialog (access a button) with an enum?

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

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

我如何从 QDialog 获取它?

我想使用:

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

但是findChild<T>需要一个QString。

有什么建议吗?

先通过object name获取buttonBox,然后才能获取到你想要的button:

QDialogButtonBox* buttonBox = dialog.findChild<QDialogButtonBox*>("buttonBox");
if (buttonBox)
{
    QPushButton* btn = buttonBox->button(QDialogButtonBox::Ok);
    if (btn)
    {
        qDebug() << "Find it!";
    }
}

findChild 通过对象名查找 Qt 对象。 你必须先给你的按钮一个对象名称:

setObjectName(const QString &name)

参见文档 here