如何将Qt窗口的内容转化为图片?

来源:互联网 发布:get it和got it 编辑:程序博客网 时间:2024/06/05 03:46

将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);
}

显示结果如下



0 0
原创粉丝点击