Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt-禁用QDialog';s"&引用;按钮_C++_Qt_Qdialog - Fatal编程技术网

C++ Qt-禁用QDialog';s"&引用;按钮

C++ Qt-禁用QDialog';s"&引用;按钮,c++,qt,qdialog,C++,Qt,Qdialog,我创建了一个QDialog实例,在“x”(关闭)按钮的左侧,我还有“?”按钮。如何从Qt 4.6 QDialog文档中禁用该“?”?: 构造一个与父级父级的对话框 对话框始终是顶级小部件,但如果它有父级,则其默认位置位于父级顶部的中心。它还将共享家长的任务栏条目 小部件标志f传递给QWidget构造函数。例如,如果您不想要**对话框**标题栏中的**这是什么按钮,请在f中传递Qt::WindowTitleHint | Qt::WindowSystemMenuHint 另请参见。如果您只想禁用该按

我创建了一个QDialog实例,在“x”(关闭)按钮的左侧,我还有“?”按钮。如何从Qt 4.6 QDialog文档中禁用该“?”?

构造一个与父级
父级
的对话框

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

小部件标志
f
传递给
QWidget
构造函数。例如,如果您不想要**对话框**标题栏中的**这是什么按钮,请在
f
中传递
Qt::WindowTitleHint | Qt::WindowSystemMenuHint


另请参见。

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

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

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

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


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

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

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

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

 app.setAttribute(Qt::AA_DisableWindowContextHelpButton);

这是一个写得很好的答案,但我想他指的是对话框标题栏中的按钮(窗口装饰)。哦。我想你是对的--我完全误解了这一点:(.对于QDialog Qt::WindowTitleHint | Qt::WindowSystemMenuHint标志会导致异常行为。直接尝试调用setWindowFlags()无效,因为没有应用“~”。另一种解决方案涉及使用&=运算符:Qt::WindowFlags flags=WindowFlags();flags&=~Qt::WindowContextHelpButtonHint;setWindowFlags(flags);实际上我们遇到了相反的问题,我们的对话框没有“帮助”按钮。这个答案帮助我们找到了问题。谢谢,顺便说一句:self.setWindowFlags(self.windowFlags()&~Qt.WindowContextHelpButtonHint)tilde是否表示要删除该标志?tilde是一个逐位补码运算符,它翻转每一位(0->1,1->0)。&是一个逐位AND运算符。当原始位和翻转的标志位和AND被删除时,该标志被删除。可能是
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
 app.setAttribute(Qt::AA_DisableWindowContextHelpButton);