读书人

一个线程画图的有关问题

发布时间: 2012-03-29 12:53:12 作者: rapoo

一个线程画图的问题
继承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不支持同时绘图?只能按代码顺序进行绘图对吗

读书人网 >QT开发

热点推荐