首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

一个线程画图的有关问题

2012-03-29 
一个线程画图的问题继承QThread的一个类。重写run()函数。实现画圆的操作。代码如下:void ThreadTest::run(){

一个线程画图的问题
继承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操作必须在主线程下完成。那我想实现这种类似线程画图的操作。怎么才能实现吗?

[解决办法]
绘制过程在UI线程中直接绘制,不要再单独启用线程来做
[解决办法]
Qt的GUI操作只能在主线程里面进行
在其他线程里面只能对QImage进行操作
[解决办法]

探讨

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

热点排行