子类化 QMessageBox

go4*_*sri 5 qt qmessagebox

我需要自定义QMessageBox。我需要删除框架和标题栏并添加我自己的标题栏和关闭按钮。还需要更换标准按钮,并可能重做框的背景颜色。

是否可以对其进行子类化并实现上述目标?有这方面的例子吗?或者,我应该继承 Dialog 并创建自己的消息框吗?

Ant*_*ony 0

不需要子类化 QMessageBox 或 QDialog。你可以传递一个QMessageBox参数Qt::FramelessWindowHint来移除框架和按钮。您还可以使用Qt 样式表来设置 QMessageBox 和按钮的背景样式。像这样的东西应该有效:

msgBox->setStyleSheet("QDialog {background-color: red;}"
                      "QPushButton {background-color: blue;}")
Run Code Online (Sandbox Code Playgroud)

我还没有测试过这个,但它应该可以工作或者非常接近。

  • 我需要删除窗口管理器的标题栏,但需要拥有自己的标题栏之一。我正在使用[this](http://qt-project.org/faq/answer/how_can_i_handle_events_in_the_titlebar_and_change_its_color_etc)创建自己的标题栏,但如何将其插入消息框的布局中? (2认同)