• 13651阅读
  • 12回复

请问如何在Qlabel 的paintEvent里自己实现加载背景图片? [复制链接]

上一主题 下一主题
离线zealane
 

只看楼主 倒序阅读 楼主  发表于: 2009-06-23
我想在qlabel里某一个指定位置显示文本,而背景是一个图片。
我在painEvent里实现了在指定位置显示文本的代码,但是如何显示背景图片呢?
谢谢。
离线shiroki

只看该作者 1楼 发表于: 2009-06-23
paintevent里drawText之前画张图不行?
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线zealane

只看该作者 2楼 发表于: 2009-06-24
引用第1楼shiroki于2009-06-23 21:15发表的  :
paintevent里drawText之前画张图不行?

谢谢大版。
但是我不理解的是,每个标签的背景图不一样,怎么能将这个图传递到paintEvent里呢?
离线zealane

只看该作者 3楼 发表于: 2009-06-24
原先我是这样子的
QImage image1(...);
image1.load("");
label1->setPixmap(Qpixmap::fromImage(image1));

这样每个标签的背景不同。
但是怎样把这个图片传递到paintEvent里呢
离线lugaideath

只看该作者 4楼 发表于: 2009-06-24
不一定在paintevent里面都可以实现的!

你自己先用qpixmap把你的图片填充进去,然后用qpainter的begin(mypixmap),然后接着就用qpainter的drawText,把你要画的文字画进去,最后就end()就是了!
离线shiroki

只看该作者 5楼 发表于: 2009-06-24
在类里弄个成员来存图片。 也可以在qapplication里设palette的 background brush, 这样每个widget都可以从palette里取得这个brush
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线zealane

只看该作者 6楼 发表于: 2009-06-24
引用第4楼lugaideath于2009-06-24 09:06发表的  :
不一定在paintevent里面都可以实现的!
你自己先用qpixmap把你的图片填充进去,然后用qpainter的begin(mypixmap),然后接着就用qpainter的drawText,把你要画的文字画进去,最后就end()就是了!


你好,我按照你的方法自定义了一个按钮类myPushButton。在构造函数里,
QPainter painter(this);
painter.begin(this);
painter.setPen(Qt::bulue);
painter.drawText(0,5,100,20,Qt::AlignTop,"500");
painter.end();

但是提示这个painter无用。
离线zealane

只看该作者 7楼 发表于: 2009-06-24
引用第5楼shiroki于2009-06-24 10:30发表的  :
在类里弄个成员来存图片。 也可以在qapplication里设palette的 background brush, 这样每个widget都可以从palette里取得这个brush


版主能具体点吗?
实在抱歉,我不是很理解。
离线lugaideath

只看该作者 8楼 发表于: 2009-06-24
QPixmap mypix("图片路径");
QPainter painter;
painter.begin(&mypix);
painter.setPen(Qt::bulue);
painter.drawText(0,5,100,20,Qt::AlignTop,"500");    //这里要确保你的坐标等等参数正确,不然你就不知道画到哪里去了
painter.end();
mylabel->setPixmap(mypix);


按照上面的试一下!
离线zealane

只看该作者 9楼 发表于: 2009-06-24
引用第8楼lugaideath于2009-06-24 16:51发表的  :
QPixmap mypix("图片路径");
QPainter painter;
painter.begin(&mypix);
painter.setPen(Qt::bulue);
painter.drawText(0,5,100,20,Qt::AlignTop,"500");    //这里要确保你的坐标等等参数正确,不然你就不知道画到哪里去了
.......

非常感谢。
搞定了。:)
离线zealane

只看该作者 10楼 发表于: 2009-06-25
不过,我还想问的是,这样做是不是把文字写到图像上去。
如果标签多的话,效率是不是很低?
因为每次改变文字都要重绘一次图像。
离线2nd090215
只看该作者 11楼 发表于: 2010-01-16
关注,
离线coldair

只看该作者 12楼 发表于: 2012-08-09
不错
快速回复
限100 字节
 
上一个 下一个