Chinaunix首页 | 论坛 | 博客
  • 博客访问: 531882
  • 博文数量: 174
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 1827
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-15 14:12
文章分类

全部博文(174)

文章存档

2018年(1)

2017年(1)

2013年(3)

2012年(9)

2010年(12)

2009年(5)

2008年(106)

2007年(37)

我的朋友

分类: C/C++

2007-11-21 10:04:41

Qt中设置背景图
 
    昨天花了一天的时候在搞程序的背景图设置,刚开始的时候总出现问题,后来才发现是Qt的资源管理部分出了点问题,现在那个问题还没有解决,不过背景图已经设置好了,现在在这里面列出来两种方法:
  
   方法一:利用QPalette,利用QPalette的话,我们既可以将背景图设置部分话在paintEvent()函数中,也可以将它放在构造函数中。如下所示我所使用的一个程序片断:

  QPalette pal;
  QString filename = QDir::currentPath()+ "/image/1.bmp";
  QPixmap pixmap(filename);
  pal.setBrush(QPalette::Window,QBrush(pixmap));
  setPalette(pal);


   方法二:利用QPainter的drawPixmap函数,这种方法只能用在paintEvent()函数中,如下所示为我所使用的一个程序片断:

  QString filename = QDir::currentPath()+ "/image/1.bmp";
  //QPixmap pixmap(":/image/zenity-calendar.png");

  QPixmap pixmap(filename);
  painter.drawPixmap(pixmap.rect(),pixmap);

  
   在上面的代码片断中,注释起来的部分有问题,可是我不清楚为什么?哪位高手知道的话还请赐教!!!
  
   最后附上我的一个程序:
文件:mywork.tar.gz
大小:13KB
下载:下载

   刚才又研究了一下 Qt Resource System ,终于发现了上面代码中的问题所在。下面是我的 .qrc 文件:

<RCC>
    <qresource prefix="/new/prefix1" >
        <file>image/1.bmp</file>
        <file>image/valveManual.JPG</file>
        <file>image/zenity-calendar.png</file>
    </qresource>
</RCC>


   若按照上述文件的话,上面的注释起来的代码应该这样写:

  QPixmap pixmap(":/new/prefix1/image/1.bmp");


  原因请看下一篇关于Qt Resource System的链接。这篇文章我以前就看过,当初感觉还挺简单,可在实际
中一用马上就出错,真是太马虎了, 鄙视一下自己,哈哈!
阅读(2052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~