一个线程画图的问题

jianmuyan 2012-03-28 11:41:19
继承QThread的一个类。重写run()函数。实现画圆的操作。代码如下:
void ThreadTest::run()
{
QPainter painter(pixmap);

for(int i = 10; i < 300; i += 10) {
painter.drawEllipse(i, y, 30, 30);
label->setPixmap(*pixmap);
QThread::msleep(100);
}
}

main函数里写:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QLabel *label = new QLabel;
label->resize(320, 200);

QPixmap pixmap(320, 200);
pixmap.fill(Qt::white);

ThreadTest *thread1 = new ThreadTest(label, &pixmap, 50);
ThreadTest *thread2 = new ThreadTest(label, &pixmap, 100);

label->setWindowTitle("Thread Demo");
label->show();

thread1->start();
thread2->start();

return a.exec();
}

提示QPixmap: It is not safe to use pixmaps outside the GUI thread,然后系统崩溃退出

查询后得之。GUI操作必须在主线程下完成。那我想实现这种类似线程画图的操作。怎么才能实现吗?
...全文
331 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianmuyan 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

。多谢了。这个意思就是QT不支持同时绘图?只能按代码顺序进行绘图对吗

是的
[/Quote]OK。结贴拉
zhu_xz 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

。多谢了。这个意思就是QT不支持同时绘图?只能按代码顺序进行绘图对吗
[/Quote]
是的
jianmuyan 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

Qt的GUI操作只能在主线程里面进行
在其他线程里面只能对QImage进行操作
[/Quote]。多谢了。这个意思就是QT不支持同时绘图?只能按代码顺序进行绘图对吗
zhu_xz 2012-03-28
  • 打赏
  • 举报
回复
Qt的GUI操作只能在主线程里面进行
在其他线程里面只能对QImage进行操作
jianmuyan 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

绘制过程在UI线程中直接绘制,不要再单独启用线程来做
[/Quote]您的意思是不是QT不支持同时绘图的功能?只能在主线程里按次序进行绘图?
开发者说 2012-03-28
  • 打赏
  • 举报
回复
绘制过程在UI线程中直接绘制,不要再单独启用线程来做
内容概要:本文围绕“【SCUC】N-1故障集+安全约束机组组合研究(Matlab代码实现)”展开,系统探讨电力系统在N-1故障场景下的安全约束机组组合(SCUC)问题,旨在实现系统安全性与运行经济性的协同优化。研究通过构建包含机组启停、出力计划、潮流约束、备用容量及N-1安全准则的数学模型,结合混合整数线性规划等优化算法,利用Matlab平台完成仿真求解,并引入YALMIP等建模工具提升建模效率。文档提供了完整的代码实现方案与测试案例,涵盖故障集的生成与处理方法,帮助用户掌握鲁棒性和分布鲁棒优化的基本思想,适用于电力系统安全校核与调度决策支持。; 适合人群:电力系统及相关专业的研究生、从事电力调度、能源优化的科研人员及工程技术人员。; 使用场景及目标:① 掌握N-1安全准则在机组组合中的建模方法与实现流程;② 开展安全约束机组组合(SCUC)与安全约束经济调度(SCED)的仿真分析;③ 利用Matlab/YALMIP快速搭建电力系统优化模型并进行求解与验证。; 阅读建议:建议读者结合文档内容与网盘提供的完整资源(含代码与数据),动手实践建模与调试过程,重点关注约束条件的设定、故障场景的枚举与处理策略,同时参考相关文献深化对鲁棒优化与分布鲁棒方法的理解。

21,503

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧