在Qt中如何为对话框(控件)设置背景?

来源:互联网 发布:win10家庭版系统优化 编辑:程序博客网 时间:2024/06/02 13:38

1.重写paintEvent()事件

在该事件中用画笔QPainter重画整个背景。该方法比较复杂,不建议初学者采用。

2.使用调色板类QPalette

  //以下代码中pWidget为指向要设置的widget的指针。  
QPalette palette = pWidget->palette();  
palette->setBrush(QPalette::Active,QPalette::Window,QBrush(Qt::red));  
pWidget->setPalette(palette); 
pWidget->setAutoBackground(true);  

推荐使用这种方法,大家可以查看一下setBrush()方法的定义:

  Palette::setBrush ( ColorGroup group, ColorRole role, const QBrush & brush ) 
 这个是一个重载版本,最为重要的是第二个参数,可以设置许多不同的类型。举例来说, 如果pWidget指向的是一个QListWidget或者QTextEdit对象,如果把第二个参数设置成QPalette::Text,则是设置其中文字的颜色;如果第二个参数是QPalette::BrightText,则是设置该对象被选中时,其文字的颜色;如果第二个参数QPalette::Bright则表示设置选中该对象时,高亮背景的颜色或者图片。该函数的功能是很强大的。

3.使用样式表。

  pWidget->setStyleSheet("background-color:blue;"); //设置背景颜色  
pWidget->setStyleSheet("background-image:url(:/folder/show.bmp);"); //设置背景图片此外,还有一些很有意思的方法,比如用setHtml(),insetHtml()这种用HTML语言的方式来指定的等等,大家可以多查查帮助文档搜索一下。

4.具体例子

  //设置为固定颜色 QPalette pal = pWidget->palette();  
pal.setColor(QPalette::Background, QColor(0,0,0)); //黑色  
pWidget->setPalette( pal ); //背景图片  
QPalette pal = pWidget->palette();  
pal.setBrush( QPixmap(图片文件名) ); //黑色  
pWidget->setPalette( pal );

原创粉丝点击