文章已更新,最新地址:http://www.fearlazy.com/index.php/post/124.html
将Qt的窗口显示的内容转化为图片的方法有两种:
第一种是调用QPixmap的静态成员函数
QPixmap grabWidget ( QWidget * widget, const QRect & rectangle )
将widget中的内容绘制到QPixmap中, rectangle可以控制区域.
第二种方法是调用QWidget的函数
void render ( QPaintDevice * target, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ) )
void render ( QPainter * painter, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ) )
从参数可以看出接收绘制内容的是QPaintDevice,所以这里不仅限于QPixmap。
例:建立一个工程,在UI设计师中拖入一个表格随意输入一些内容:
在构造函数中调用上述方法,最后用一个label将pixmap显示出来
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// QPixmap pixmap(ui->tableWidget->size());
// ui->tableWidget->render(&pixmap);
QPixmap pixmap = QPixmap::grabWidget(ui->tableWidget);
ui->label->setPixmap(pixmap);
}
显示结果如下