22

我创建了一个 QDialog 实例,在“x”(关闭)按钮的左侧我也有“?” 按钮。我怎样才能禁用那个'??

4

4 回答 4

44

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

this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
于 2010-06-09T16:38:09.690 回答
5

从 Qt 4.6 QDialog 文档:

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

构造一个带有 parent 的对话框parent

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

小部件标志f被传递给QWidget构造函数。例如,如果您不想要对话框标题栏中的 **What's This 按钮**,请传入Qt::WindowTitleHint | Qt::WindowSystemMenuHint.f

另请参阅QWidget::setWindowFlags()

于 2010-06-03T17:47:02.183 回答
0

如果您只想禁用该按钮,则可以调用setEnabled(bool),但我怀疑这就是所要求的。

如果要删除该按钮,请参见下文:

QDialog旨在将 aQDialogButtonBox用作显示在对话框上的按钮。您可以使用QDialogBu​​ttonBox中可用的访问器来禁用您不想要的按钮(以及启用其他按钮)。

例如(来自上面链接的文档):

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);

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

于 2010-06-03T17:49:36.717 回答
0

对于 Qt 5.10 及更高版本,您可以使用应用程序范围标志 Qt::AA_DisableWindowContextHelpButton

 app.setAttribute(Qt::AA_DisableWindowContextHelpButton);
于 2020-07-05T17:46:43.733 回答