我需要自定义 QMessageBox。我需要删除框架和标题栏并添加我自己的标题栏和关闭按钮。还需要更换标准按钮并可能重做框的背景颜色。
是否可以对其进行子类化并实现上述目标?这有什么例子吗?或者,我应该只继承 Dialog 并创建自己的消息框吗?
我需要自定义 QMessageBox。我需要删除框架和标题栏并添加我自己的标题栏和关闭按钮。还需要更换标准按钮并可能重做框的背景颜色。
是否可以对其进行子类化并实现上述目标?这有什么例子吗?或者,我应该只继承 Dialog 并创建自己的消息框吗?
本关于自定义窗口的教程可能会对您有所帮助。它是法语的,但代码示例是英语的,它展示了如何编写自己的标题栏、创建一个窗口并在其上附加新的标题栏。我以前也经历过,一旦你完成它就很简单了。
不需要继承 QMessageBox 或 QDialog。你可以传递一个 QMessageBox 的参数Qt::FramelessWindowHint
来移除框架和按钮。您还可以使用Qt 样式表来设置 QMessageBox 的背景以及按钮的样式。像这样的东西应该工作:
msgBox->setStyleSheet("QDialog {background-color: red;}"
"QPushButton {background-color: blue;}")
我没有对此进行测试,但它应该可以工作或非常接近。