Qt显示图像

51 阅读1分钟

创建Qt项目

image.png

编辑头文件

编辑sdltest.h头文件,重载paintEvent事件

#sdltest.h
#pragma once

#include <QtWidgets/QWidget>
#include "ui_sdltest.h"

class SDLTest : public QWidget
{
    Q_OBJECT

public:
    SDLTest(QWidget *parent = nullptr);
    ~SDLTest();

    // 重载绘制画面函数
    void paintEvent(QPaintEvent* event) override;

private:
    Ui::SDLTestClass ui;
};

实现绘制函数

编辑sdltest.cpp文件

#sdltest.cpp
#include "sdltest.h"
#include <QPainter>
#include <QImage>

static int w = 1280;
static int h = 720;

SDLTest::SDLTest(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
    // 改变窗口大小
    resize(w, h);
}

SDLTest::~SDLTest()
{}

void SDLTest::paintEvent(QPaintEvent* event)
{

    QImage img(w, h, QImage::Format_RGB888);  // 使用三个字节来表示


    auto d = img.bits();  // 取到图像数据

    // 优先遍历高度
    for (int j = 0; j < h; j++)
    {
        int b = j * w * 3; // 相对其实位置字节数
	    for (int i = 0; i < w * 3; i += 3)
	    {
            d[b+i] = 255;  // R
            d[b + i + 1] = 0;  // G
            d[b + i + 2] = 0;  // B
	    }
    }

    QPainter p;
    p.begin(this);

    p.drawImage(0, 0, img);

    p.end();

}


运行项目,查看效果

image.png