【问题标题】:Remove titlebar of QMessageBox when use static method QMessageBox::information()?使用静态方法 QMessageBox::information() 时删除 QMessageBox 的标题栏?
【发布时间】:2013-05-15 03:06:01
【问题描述】:

要显示消息框,我使用以下代码:

int ret = QMessageBox::question(this,"Title","Stupid code",QMessageBox::Yes | QMessageBox::No);

一切都按预期工作,但现在,我想删除消息框的标题栏。 我怎样才能做到这一点?

我不想使用:

QMessageBox msgBox("Title" , "Stupid code", QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, this, Qt::FramelessWindowHint);
msgBox.exec();

【问题讨论】:

  • 你试过 QMessageBox msgBox("" , "Stupid code", QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, this, Qt::FramelessWindowHint);
  • 我不想那样做(我在 p/s 中说过)。 @_@
  • 不想使用@Arun建议的方法的原因是什么?
  • 我们项目中的每个人都使用静态api。但是现在我们要装饰窗户。如果使用@Arun的建议,我们需要更改很多行代码@_@

标签: qt qt4 qt5 qtstylesheets qmessagebox


【解决方案1】:

我建议您通过使用静态成员函数question() 创建自己的XMessageBox 类来创建包装函数,接受与QMessageBox::question() 相同的参数。在您的包装函数中,创建一个 QMessageBox 对象,其中包含给函数的参数以及 Qt::FramelessWindowHint 标志,调用 exec() 并传递返回值。这样,您只需在代码中搜索所有出现的QMessageBox::question 并将其替换为XMessageBox::question

如果您想要更大的灵活性,您可以让您的question() 函数接受Qt::WindowFlags 类型的附加参数并将其传递给QMessageBox 构造函数。

唯一能让您在不更改任何代码的情况下做您想做的事情的唯一选择是更改 Qt 代码 (qmessagebox.cpp) 并重新编译 Qt。

【讨论】:

    猜你喜欢
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2018-12-10
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多