如何将QTextEdit内容叠加到背景Pixmap中?

时间:2016-12-30 03:39:48

标签: qt qtextedit

我在我的IDE中使用QT。

目的是将QTextEdit文本内容移动到背景Pixmap中并保持透明度,使得只有文本在背景像素图上显示为重叠 - 即除了文本之外,背景中的任何内容都将通过甚至在QTextEdit框中。我的应用程序(未显示)是将QTextEdit内容“刻录”到背景像素图中以制作照片的横幅文本等。

我的尝试是在MainWindow小部件上使用抓取,因为它看起来最直接。下面的基本程序说明了我的工作如下: 奇怪的是,它在MainWindow的屏幕上显示的是我想要的。  截图是: enter image description here

但foo.png中的实际内容是

enter image description here

通过这种或其他方式欣赏任何指示。

由于

肖恩

#include <QPainter>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTextEdit>

QTextEdit *text;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    /*
     * Setup a QTextEdit widget
     */
    text = new QTextEdit(this);
    text->viewport()->setAutoFillBackground(false);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    /*
     * On a MousePress, grab the MainWindow's Screen area
     * and save it to a .png file
     * This attempts to overlay the QTextEdit contents on the background
     * by doing essentially a screen capture
     */
    QPixmap pix = this->grab(this->rect());
    pix.save("C:/Users/temp/foo.png");
}

void MainWindow::paintEvent(QPaintEvent *event)
{

    QPainter painter(this);

    //Read in the Background image (could be anything)
    QPixmap pix("C:/Users/temp/photo.jpg");

    /*
     * Move it into somewhere inside main screen so it shows
     * as overlay in MainWindow's view
     */
    text->move(QPoint(40, 40));
    text->show();

    /*
     * Paint the background to MainWindow's view
     */
    painter.drawPixmap(0,0, this->width(), this->height(), pix);

}

0 个答案:

没有答案