使用静态方法QMessageBox :: information()时删除QMessageBox的标题栏?

时间:2013-05-15 03:06:02

标签: qt qt4 qt5 qtstylesheets qmessagebox

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

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

1 个答案:

答案 0 :(得分:1)

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

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

唯一可以让你按照自己的意愿而不改变任何代码的方法是更改​​Qt代码(qmessagebox.cpp)并重新编译Qt。