Qt - Disabling QDialog's “?” button

大憨熊 提交于 2019-12-03 04:49:02

Change the window flags, for example in the constructor:

this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
Matias Valdenegro

From the Qt 4.6 QDialog documentation:

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

Constructs a dialog with parent parent.

A dialog is always a top-level widget, but if it has a parent, its default location is centered on top of the parent. It will also share the parent's taskbar entry.

The widget flags f are passed on to the QWidget constructor. If, for example, you don't want a **What's This button in the title bar of the dialog**, pass Qt::WindowTitleHint | Qt::WindowSystemMenuHint in f.

See also QWidget::setWindowFlags().

If you just want to disable the button, you can call setEnabled(bool), but I doubt that's what's being asked.

If you want to remove that button, see below:

QDialog is intended to use a QDialogButtonBox as the buttons that show up on the dialog. You can use accessors available in QDialogButtonBox in order to disable the buttons you don't want (as well as enable others).

For example (from the documentation linked to above):

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

If you're not aware of the button box, I'd guess that designer automatically added it for you and it should have a name that makes it accessible. There should also be properties (checkboxes) that you can check in order to control which buttons are accessible by default.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!