程序逻辑
程序代码
test_image.h
class TestImage: public QObject
{
Q_OBJECT
public:
TestImage(QObject* parent=nullptr);
signals:
//发送渲染图片
void updateImage(QImage image);
public slots:
//线程中渲染图片
void onDrawImage();
};
test_image.cpp
#include "test_image.h"
TestImage::TestImage(QObject* parent): QObject(parent)
{
}
void TestImage::onDrawImage()
{
/**/
QImage image;
emit updateImage(image);
}
test_ui.h
class TestUi: public QObject
{
Q_OBJECT
public:
TestUi(QObject* parent=nullptr);
~TestUi();
signals:
void drawImage();
public slots:
void onUpdateImage(QImage image);
private:
TestImage m_testImage;
QThread m_thread;
};
test.ui.cpp
#include "test_ui.h"
TestUi::TestUi(QObject* parent): QObject(parent)
{
m_testImage.moveToThread(&m_thread);
//调用线程处理复杂逻辑
connect(this, &TestUi::drawImage, &m_testImage, &TestImage::onDrawImage);
//回到主线程显示界面
connect(&m_testImage, &TestImage::updateImage, this, &TestUi::onUpdateImage);
}
TestUi::~TestUi()
{
m_thread.quit();
m_thread.wait();
}
void TestUi::onUpdateImage(QImage image)
{
/**/
}
补充1-绘图相关程序
绘图4要素:画布,画师,画笔,画刷
程序示例
{
//定义绘图设备
QImage image(500, 500, QImage::Format_ARGB32);
//定义画家,指定绘图设备
QPainter p(&image);
//定义画笔
QPen pen;
//自定义画笔样式,设置宽度
pen.setWidth(5);
//将画笔交给画家
p.setPen(pen);
//定义画刷
QBrush brush;
//设置样式,颜色
brush.setStyle(Qt::SolidPattern);
brush.setColor(Qt::red);
//将画刷交给画家
p.setBrush(brush);
//定义绘图随机点
QPoint points[]=
{
QPoint(qrand()%500, qrand()%500),
QPoint(qrand()%500, qrand()%500),
QPoint(qrand()%500, qrand()%500),
QPoint(qrand()%500, qrand()%500),
QPoint(qrand()%500, qrand()%500)
};
//绘制多边形
p.drawPolygon(points, 5);
}
补充2-更新主界面程序
- 定义类继承QWidget
- 重写更新界面操作
void Widget::paintEvent(QPaintEvent* paint)
{
QPainter p(this);
QImage image;
p.drawImage(50, 50, image);
}