qt 线程加载图片失败

D_lady 2015-03-14 04:33:03
linux 下安装的qt4,在主方法中可以从数据库加载图片,但是用线程就有问题,不知道怎么解决
    pthread_t id;
pthread_create(&id, NULL, reader, this);



void MainWindow::Event_Reader(void)
{
int fRet, ln;
char szbuz[64];
uint32_t eid;
for(;;)
{
fRet = Mfr_OnEvent(eid, szbuz, sizeof(szbuz), ln);
if(fRet)continue;

sprintf(szbuz, "%X", eid);
QSqlQuery query;
query.prepare("select * from student where uid =:uid");
query.bindValue(":uid",szbuz);
query.exec();
if(query.next()){
QString uid = query.value(0).toString();
QString name = query.value(1).toString();
QString sex = query.value(2).toString();
QString no = query.value(3).toString();
QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
QImage photo;
photo.loadFromData(query.value(4).toByteArray(), "JPG");
ui->PicLabel->setPixmap(QPixmap::fromImage(photo));
ui->PicLabel->setScaledContents(true);
ui->l_uid->setText(uid);
ui->l_name->setText(name);
ui->l_sex->setText(sex);
ui->l_class->setText(no);
ui->l_time->setText(time);
}
}
}
...全文
293 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang580231 2015-03-17
  • 打赏
  • 举报
回复
在QT帮助文档中,明确指出QPixmap不可在非GUI线程中使用。但是QImage是可以在非GUI线程使用的。
D_lady 2015-03-17
  • 打赏
  • 举报
回复
刚开始研究这个,求指教
D_lady 2015-03-17
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
ui->PicLabel->setPixmap(QPixmap::fromImage(photo)); QPixmap不能在非GUI线程中使用
那要怎么用?
foruok 2015-03-17
  • 打赏
  • 举报
回复
ui->PicLabel->setPixmap(QPixmap::fromImage(photo)); QPixmap不能在非GUI线程中使用

16,173

社区成员

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

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