创建Qt项目
编辑头文件
编辑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();
}