QT中如何避免paintEvent多次调用的问题
在QT中使用paintEvent画图,但是出现画很多次的情况,我覆盖一下画图窗口,就调用一次update(),更新一下界面,我只需要画一次,不需要覆盖一下窗口就重新画,因为我画的是SHP格式的坐标数据,数据量特别大!
int main(int argc, char *argv[])
QApplication a(argc, argv);
//QProcess::startDetached("C:\\Program Files (x86)\\HDPicViewer\\HDPicViewer.exe", QStringList());
MainWidget w;
w.show();
mapdraw v;
v.show();
//v.Paint(500,500);
//Draw v;
// v.showMaximized(); //窗口默认最大化
return a.exec();
mapdraw::mapdraw(QWidget *parent) :
QWidget(parent),
ui(new Ui::mapdraw)
ui->setupUi(this);
// 设置窗口
setFixedSize(8000, 6000);//设置窗口初始大小
setWindowTitle(tr("禄口机场_Shp_Pic"));//设置标题栏标题
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint);
// 初始化QPixmap
Pix = QPixmap(8000, 6000);
Pix.fill(Qt::white);
qDebug("OK1!\n");
void mapdraw::paintEvent(QPaintEvent *)
QPainter painter(this);
painter.drawPixmap(0, 0, 2400, 1200,Pix);
qDebug("OK!\n");
qDebug("usPreTail:%d",usPreTail);
//Paint(100,50);
//Paint(Point[0],Point[1]);
for(int i=0;i<usPreTail;i++)
Paint(value[i].at(0));
qDebug("Point[0],Point[1]:%d,%d",value[i].at(0).x,value[i].at(0).y);
//painter.drawPoint(50,100);
代码的思路是读取shp文件里的坐标数据,储存在QVector容器内,在从容器中取出数据进行画图。
怎么才能只调用paintEvent一次?
0
提建议
邀请回答
编辑
收藏
删除
收藏
举报
追加酬金
(90%的用户在追加酬金后获得了解决方案)
当前问题酬金
¥
0
(可追加 ¥500)
支付方式
扫码支付
加载中...
1
条回答
默认
最新
-
木风可可
2021-10-28 17:22
关注
为什么要在paintEvent里面绘图,包装一个函数往图片里绘图,需要时调用不就好了
paintEvent用来显示图片
本回答被题主选为最佳回答
, 对您是否有帮助呢?
本回答被专家选为最佳回答
, 对您是否有帮助呢?
本回答被题主和专家选为最佳回答
, 对您是否有帮助呢?
举报
按下Enter换行,Ctrl+Enter发表内容
查看更多回答(0条)