• 9682阅读
  • 1回复

关于 QPixmap::grabWidget() 的使用. [复制链接]

上一主题 下一主题
离线liur
 
只看楼主 倒序阅读 楼主  发表于: 2007-09-26
— 本帖被 XChinux 执行加亮操作(2008-07-18) —
为了简单的实现一个 透明背景 QLabel. 我使用了 QPixmap::grabWidget();

设计:
1. widget 是一个窗体.
2. label 是窗体 widget 上的一个控件. label 继承于 QLabel.

如果在 QWidget 上如此写:
QPixmap map = QPixmap::grabWidget(this, 100, 0, 100, 100);
label->setGeometry(100, 0, 100, 100);
label->setPixmap(map);
那么控件 label 就是背景透明了. 因为 "低耦合" , 我想让 label 控件自己实现 QPixmap::grabWidget();于是我在 label 中提供了一个函数 ,代码如下:

....moveWndTo(QRect &rc)
{
setGeometry(rc);
back = QPixmap::grabWidget(parentWidget, rc.x(), rc.y(), rc.width(), rc.height());
update();
}

重写 paintEvent();
.....paintEvent(QPaintEvent *pe)
{
QPainter pt(this);
QRect rc = rect();

pt.drawPixmap(rc.x(), rc.y(), back);
}
结果:
不能得到想要的效果.  label 控件显示出一个全黑的背景图.

问题:
我哪里写的有问题吗?
离线anthonymo200
只看该作者 1楼 发表于: 2011-03-22
我最近也碰到了同样的问题,我把读取的图片保存为文件, 就是黑的, 那应该是没有抓到正确的图片。  
快速回复
限100 字节
 
上一个 下一个