2013-05-15 39 views
1

要显示一个消息框,我用这个代码:使用静态方法QMessageBox :: information()时,删除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

你尝试QMessageBox提示MSGBOX( “”, “愚蠢的代码”,QMessageBox提示::问题,QMessageBox提示::是| QMessageBox提示::没有,为此,Qt的:: FramelessWindowHint); – Arun

+0

我不想这样做(我在p/s中说过)。 @ _ @ – PhiVH

+1

不想使用@Arun建议的方法的原因是什么? – TheDarkKnight

回答

1

我会建议你用一个静态成员函数question()创建自己的XMessageBox类,接受相同的参数QMessageBox::question()创建一个包装函数。在您的包装功能,创建一个给你的功能,另外的论点QMessageBox对象时,Qt::FramelessWindowHint标志,拨打exec()并传递返回值。这样,您只需在代码中搜索并替换所有出现的QMessageBox::questionXMessageBox::question

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

,让你做你想做的在不改变任何代码的是改变了Qt代码(qmessagebox.cpp)和重新编译的Qt的唯一选择。