• 9478阅读
  • 11回复

QT 对话框上显示图片的问题? [复制链接]

上一主题 下一主题
离线beikejidan1
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-28
本人是QT初学者,最近在网上http://apps.hi.baidu.com/share/detail/24642020#content学习在对话框应用程序显示图片,按照第一步设计下来,运行是对话框是空白,并没有显示图片,请问这是为什么,怎么解决?
编程步骤:
1 新建对话框工程painter5
2 编译后在debug文件夹下新建images文件夹,并将一个大小15*20的jpg图片放入images文件夹下
3 在dialog.h文件中添加头#include <QPainter>  和私有函数void paintEvent(QPaintEvent *);
4 在dialog.cpp文件中编辑void paintEvent(QPaintEvent *)函数
void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPixmap pix;
pix.load("images/hehe.jpg");
painter.drawPixmap(0,0,500,500,pix);
}
5 编译运行

PS:将路径改为绝对路径也不行
[ 此帖被beikejidan1在2011-02-28 13:51重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2011-02-28
第一个问题:将这样的IO语句放入 paintEvent 是比较不负责任的(尽管不是你这儿出错的原因)
QPixmap pix;
pix.load("images/hehe.jpg");

第二个问题,注意到你使用的是相对路径 !! 如果你对程序的工作目录 和 程序所在的目录 的区别不了解,而又想马上看到结果,不妨先改成绝对路径 ( ^_^ )
离线beikejidan1
只看该作者 2楼 发表于: 2011-02-28
回 1楼(dbzhang800) 的帖子
绝对路径我试过了 也不行
离线roywillow

只看该作者 3楼 发表于: 2011-02-28
会不会是jpg这个格式的问题呢?
qt原生支持png,用png试试吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线beikejidan1
只看该作者 4楼 发表于: 2011-02-28
回 3楼(roywillow) 的帖子
也不行
离线qq419036154

只看该作者 5楼 发表于: 2011-02-28
创建一个资源文件,并把images/hehe.jpg添加进去
离线beikejidan1
只看该作者 6楼 发表于: 2011-02-28
回 5楼(qq419036154) 的帖子
试过了 不知道是使用什么路径表示方法 还是显示不出来
离线beikejidan1
只看该作者 7楼 发表于: 2011-03-01
问题解决!使用绝对路径,并使用且要用“/”,而不能用“\”
如pix.load("C:/Qt/2010.05/share/pixmaps/qtcreator_logo_512.png");
离线dbzhang800

只看该作者 8楼 发表于: 2011-03-02
引用第7楼beikejidan1于2011-03-01 21:21发表的  :
问题解决!使用绝对路径,并使用且要用“/”,而不能用“\”
如pix.load("C:/Qt/2010.05/share/pixmaps/qtcreator_logo_512.png");


1. 使用绝对路径不是解决问题的方法。它可以工作只能用来证明:先前你的问题是“不了解程序所在目录 和 程序工作目录 的区别”

2. 路径分割符不是不能用 "\" (事实上,windows下的路径分隔符就是这个)。你需要的是找本C/C++ 的书,重温下转义字符。 (当然,在Qt下始终使用 posix的路径分隔符 "/" 是比较好的选择)
离线uidab

只看该作者 9楼 发表于: 2011-03-08
个人感觉应该和debug或者release目录放在同一个目录级别下.而不是放到某一个里面.
比如项目名叫aaa. 编译后会生成一个aaa-build-desktop目录,下面有debug和release目录,你的image目录应该放在aaa--build-desktop目录下.
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线btptboy

只看该作者 10楼 发表于: 2011-03-08
创建一个资源文件 路径的表示方法是在路径前加上冒号 比如      :/image/1.jpg
我思故我在
离线yangguanghao

只看该作者 11楼 发表于: 2013-08-18
我也碰到了这个问题,原因是pix.load("images/hehe.jpg"); 里面的双引号是中文的,改成英文的就好了~
快速回复
限100 字节
 
上一个 下一个