【问题标题】:How do I get a child of a QDialog (access a button) with an enum?如何获得带有枚举的 QDialog 的子项(访问按钮)?
【发布时间】:2021-11-04 08:35:27
【问题描述】:

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

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

小时候如何从 QDialog 中获取它?

我想用:

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

但是findChild&lt;T&gt; 需要一个 QString。

有什么建议吗?

【问题讨论】:

  • 你为什么需要它?如果您已经有一个专门的功能可以完全满足您的需求。
  • 你到底想做什么......这在我看来就像一个 x->y 问题......

标签: qt enums qt5 qt5.12


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    setObjectName(const QString &amp;name)

    请参阅文档here

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2010-09-12
      • 2015-01-14
      • 1970-01-01
      • 2013-06-15
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多