制作.ui,放置一个QLabel。
编写头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QPainter>
#include "ui_mainWindowUi.h"
#include <windows.h>
#include <iostream>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void Draw();
QImage *image;
private:
Ui::Form *ui;
};
#endif // MAINWINDOW_H
源文件
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
ui = new Ui::Form;
ui->setupUi(this);
image = new QImage(1820,980, QImage::Format_RGB32);
// Format_RGB32
}
MainWindow::~MainWindow()
{
delete(ui);
delete(image);
}
void MainWindow::Draw(){
DWORD time_start, time_end;
time_start = GetTickCount();
// QPainter painter;
// painter.begin(image);
// painter.setPen(QPen(Qt::green, 1));
// for(int i=0;i<1000;i++){
// for (int j=0;j<1000;j++){
// painter.drawPoint(i, j);
// }
// }
// painter.end();
for(int i=0;i<10000;i++){
for(int j=0;j<10000;j++){
if(i < 1800 && j < 980){
image->setPixel(i, j, RGB(255, 0, 0));
}
}
}
QPixmap imagePixmap = QPixmap::fromImage(*image);
ui->labelPic->setPixmap(imagePixmap);
time_end = GetTickCount();
std::cout << "Time = " << (time_end - time_start) << "ms\n ";
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.Draw();
w.show();
return a.exec();
}
通过QImage的setPixel直接对像素进行操作,将QImage转为QPixmap再显示在QLabel上