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