【问题标题】:Qt - Disabling QDialog's "?" button [duplicate]Qt - 禁用 QDialog 的“?”按钮 [重复]
【发布时间】:2011-02-27 10:37:49
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qdialog


    【解决方案1】:

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

     app.setAttribute(Qt::AA_DisableWindowContextHelpButton);
    

    【讨论】:

      【解决方案2】:

      来自 Qt 4.6 QDialog 文档:

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

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

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

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

      另见QWidget::setWindowFlags()

      【讨论】:

      • 对于 QDialog Qt::WindowTitleHint | Qt::WindowSystemMenuHint 标志会导致异常行为。
      【解决方案3】:

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

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

      【讨论】:

      • 尝试直接调用 setWindowFlags() 不起作用,因为没有应用 '~'。另一种解决方案涉及使用 &= 运算符:
         Qt::WindowFlags flags = windowFlags();标志 &= ~Qt::WindowContextHelpButtonHint;设置窗口标志(标志); 
      • 实际上我们遇到了相反的问题,我们的对话框没有帮助按钮。这个答案帮助我们寻找问题所在。谢谢
      • 顺便说一句,在 PySide 中:self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) 波浪号是否表示要删除该标志?
      • 波浪号是按位补码运算符,它翻转每一位 (0->1, 1->0)。 & 是按位与运算符。当原始位和翻转的标志位进行与运算时,该标志被移除。
      【解决方案4】:

      如果您只是想禁用该按钮,您可以致电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);
      

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

      【讨论】:

      • 这是一个写得很好的答案,但我认为他指的是对话框标题栏中的按钮(窗口装饰)。
      • 哦。我认为你是对的——我肯定误解了那个:(。
      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 2018-07-15
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多