• 7335阅读
  • 4回复

怎样设置QWidget的背景颜色,这样出不了效果…… [复制链接]

上一主题 下一主题
离线彩阳
 

只看楼主 倒序阅读 楼主  发表于: 2012-10-31
我自己写的类,继承子QWidget,下面是这个类的部分代码:
  1. #include <QtGui>
  2. #include "DiagramViews.h"
  3. #include "Histogram.h"
  4. DiagramViews::DiagramViews(QWidget *parent): QWidget( parent )
  5. {
  6.     m_BKColor = QColor( 255, 0, 0 );
  7.     m_VecPixmap.clear( );
  8.     setBackgroundRole( QPalette::Background );
  9.     setAutoFillBackground( true );
  10.     setMinimumSize( 640, 480 );
  11.     adjustSize( );
  12.     DrawPixmaps( );
  13. }
  14. void DiagramViews::DrawPixmaps( void )
  15. {
  16.     m_VecPixmap.clear( );
  17.     for ( quint32 i = 0; i < 3; i++ )
  18.     {
  19.         QPixmap pixmap( minimumSize( ) * 0.8 );
  20.         pixmap.fill( QColor( 170, 255, 255 ) );
  21.         m_VecPixmap.push_back( pixmap );
  22.     }
  23.     // 绘制第一张像素图
  24.     Histogram histogram;
  25.     histogram.Paint( &m_VecPixmap[0] );
  26. }
  27. void DiagramViews::paintEvent( QPaintEvent* )
  28. {
  29.     QPainter painter( this );
  30.     QPoint pixmapPt;
  31.     pixmapPt.setX( minimumSize( ).width( ) * 0.1 );
  32.     pixmapPt.setY( minimumSize( ).height( ) * 0.1 );
  33.     //painter.setBackground( QBrush( m_BKColor ) );
  34.     painter.setBrush( QBrush( m_BKColor ) );
  35.     //painter.setBrush( Qt::black );
  36.     painter.drawPixmap( pixmapPt, m_VecPixmap[0] );
  37. }
  38. void DiagramViews::SetBackgroundColor( QVariant color )
  39. {
  40.     // 因为它有个复制构造函数(和QRgb),
  41.     // 而QRgb = uint = unsigned int
  42.     // 所以编译能够成功。
  43.     m_BKColor = color.toUInt( );
  44.     update( );
  45. }
发现这样不能显示背景颜色,是我哪儿错了吗?如果需要更多信息,我会提供的。



上海Qt开发联盟,热忱地欢迎你的加入!
离线yfx2003

只看该作者 1楼 发表于: 2012-10-31
没看到在哪里调用  SetBackgroundColor  函数的

设置背景色,一般在paintEvent中进行即可
www.qtcn.org/gpq4/
ajaxref.okajax.com/
离线彩阳

只看该作者 2楼 发表于: 2012-10-31
回 1楼(yfx2003) 的帖子
谢谢回复。我这个SetBackgroundColor是一个槽。发现槽函数的确被调用了。
请问在paintEvent中设置背景色究竟该怎么写呢?
上海Qt开发联盟,热忱地欢迎你的加入!
离线jdwx

只看该作者 3楼 发表于: 2012-10-31
回 2楼(彩阳) 的帖子
只想设置QWidget的背景颜色:
写在构造函数里。
setAutoFillBackground( true );
qpalette pa = palette();
pa.setColor(qpalette::window,QColor(255,255,0));//黄色
setpalette(pa);
大概这个意思,代码没有区分大小写。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线彩阳

只看该作者 4楼 发表于: 2012-10-31
回 3楼(jdwx) 的帖子
实在是太感谢了。代码经测试,成功!
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个