代码之家  ›  专栏  ›  技术社区  ›  Narek

qt-禁用qdialog?“纽扣

  •  19
  • Narek  · 技术社区  · 15 年前

    我创建了一个Qdialog实例,在“x”(关闭)按钮的左侧,我还有“?”按钮。我怎么能禁用它??

    3 回复  |  直到 10 年前
        1
  •  39
  •   user362638    15 年前

    更改窗口标志,例如在构造函数中:

    this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
    
        2
  •  5
  •   Victor    11 年前

    从Qt4.6 Qdialog文档中:

    QDialog::QDialog ( QWidget * parent  = 0, Qt::WindowFlags  f = 0 )
    

    与父级建立对话 parent .

    对话框始终是顶级小部件,但如果它有父级,则其默认位置集中在父级顶部。它还将共享父级的任务栏条目。

    小部件标记 f 传递给 QWidget 构造函数。例如,如果 你不想要一个**这是什么? 按钮在对话框的标题栏**,通过 Qt::WindowTitleHint | Qt::WindowSystemMenuHint 在里面 f .

    也见 QWidget::setWindowFlags() .

        3
  •  0
  •   Kaleb Pederson    15 年前

    如果您只想禁用该按钮,可以调用 setEnabled(bool) 但我怀疑这就是被问到的问题。

    如果要删除该按钮,请参见以下内容:

    QDialog 旨在使用 QDialogButtonBox 作为显示在对话框上的按钮。您可以使用中可用的访问器 QDialogButtonBox 为了禁用不需要的按钮(以及启用其他按钮)。

    例如(从以上链接的文档中):

    findButton = new QPushButton(tr("&Find"));
    findButton->setDefault(true);
    
    moreButton = new QPushButton(tr("&More"));
    moreButton->setCheckable(true);
    moreButton->setAutoDefault(false);
    
    buttonBox = new QDialogButtonBox(Qt::Vertical);
    buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
    buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);
    

    如果您不知道按钮框,我想设计师会自动为您添加它,并且它应该有一个可以访问的名称。还应该有一些属性(复选框),您可以选中它们来控制默认情况下哪些按钮是可访问的。