【发布时间】:2011-02-27 10:37:49
【问题描述】:
我创建了一个 QDialog 实例,在“x”(关闭)按钮的左侧我也有“?”按钮。我怎样才能禁用那个'? ?
【问题讨论】:
我创建了一个 QDialog 实例,在“x”(关闭)按钮的左侧我也有“?”按钮。我怎样才能禁用那个'? ?
【问题讨论】:
对于 Qt 5.10 及更高版本,您可以使用应用程序范围标志 Qt::AA_DisableWindowContextHelpButton
app.setAttribute(Qt::AA_DisableWindowContextHelpButton);
【讨论】:
来自 Qt 4.6 QDialog 文档:
QDialog::QDialog ( QWidget * parent = 0, Qt::WindowFlags f = 0 )构造一个与父级
parent的对话框。对话框始终是顶级小部件,但如果它有父小部件,则其默认位置位于父小部件的顶部。它还将共享父级的任务栏条目。
小部件标志
f被传递给QWidget构造函数。例如,如果您不想在对话框的标题栏中出现**这是什么按钮**,请在f中传递Qt::WindowTitleHint | Qt::WindowSystemMenuHint。
【讨论】:
更改窗口标志,例如在构造函数中:
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
【讨论】:
Qt::WindowFlags flags = windowFlags();标志 &= ~Qt::WindowContextHelpButtonHint;设置窗口标志(标志);
如果您只是想禁用该按钮,您可以致电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);
如果您不知道按钮框,我猜设计师会自动为您添加它,并且它应该有一个可以访问的名称。还应该有一些属性(复选框)可供您检查,以控制默认情况下可以访问哪些按钮。
【讨论】: