2012-09-14 96 views
3

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

是否有可能继承它,并实现以上?有没有任何这样的例子?或者,我应该只是分类Dialog并创建自己的消息框?

回答

0

有没有需要继承QMessageBox提示或QDialog的。您可以通过QMessageBox参数Qt::FramelessWindowHint删除框架和按钮。您还可以使用Qt Style Sheets来设置QMessageBox的背景以及按钮的样式。像这样的东西应该工作:

msgBox->setStyleSheet("QDialog {background-color: red;}" 
         "QPushButton {background-color: blue;}") 

我没有测试过这一点,但它应该工作或八九不离十。

+1

我需要删除的窗口管理器的标题栏,但需要有一个我自己的。我使用[这](http://qt-project.org/faq/answer/how_can_i_handle_events_in_the_titlebar_and_change_its_color_etc)创建自己的标题栏,但我要如何将其插入到消息框的布局? – go4sri

+0

@ go4sri您可以使用QWidget :: layout()获取对话框的布局,然后在顶部插入新的标题栏(即在索引0处)。我认为这将做到:'msgBox-> layout() - > insertWidget(0,titleBarWidget);'。你可能需要将布局static_cast到任何类型的布局(可能是QBoxLayout)。你也可以用QVBoxLayout创建一个新的QWidget,并使用'addWidget()'添加标题栏,然后再添加消息框。不知道这是否会起作用。 – Anthony

1

This tutorial on custom windows might help you.这是在法国,但代码示例都是英文的,它显示了如何撰写自己的标题栏,创建一个窗口,并附加新的标题栏就可以了。我以前经历过这件事,一旦你完成了它,它非常简单。