• 3446阅读
  • 14回复

[提问]线程操作 [复制链接]

上一主题 下一主题
离线feiyang0725
 

只看楼主 倒序阅读 楼主  发表于: 2013-03-05
我将主界面的ui->tableView以指针的形式传递到从线程里面去,然后在从线程给这个ui->tableView里面赋值
QTableView *p1=ui->tableView;
QTableView *p2=ui->tableView_2;
WaitThread *wait=new WaitThread(this,p1,p2);
但是在输出中一直显示
QPixmap: It is not safe to use pixmaps outside the GUI thread
程序还是可以运行的,但是就是不知道什么原因导致报这个。。
离线feiyang0725

只看该作者 1楼 发表于: 2013-03-05
这两个ui->tableView分别放在不同的tabWidget上,当从线程向这两个ui->tableView写值的时候,
我来回点击这两个ui->tableView对应的tabwidget的标签时还会报内存错误。。这是为什么?
离线pxiao_xiao

只看该作者 2楼 发表于: 2013-03-05
跨线程 最好用connect()
离线feiyang0725

只看该作者 3楼 发表于: 2013-03-05
回 2楼(pxiao_xiao) 的帖子
怎么连接,我一个线程分别向这两个ui->tableView赋值,还需要用connect连接?怎么连?
离线pxiao_xiao

只看该作者 4楼 发表于: 2013-03-05
如果你是先创建的两个tabWidget子页后创建的辅线程 为什么不能connect?
离线pxiao_xiao

只看该作者 5楼 发表于: 2013-03-05
另外 两个view同时争抢一个数据源 这个不得同步一下?
离线feiyang0725

只看该作者 6楼 发表于: 2013-03-05
回 4楼(pxiao_xiao) 的帖子
一个tabwidget上面放两个tableview,从线程分别向这两个tableview里面赋值的。。
离线feiyang0725

只看该作者 7楼 发表于: 2013-03-05
现在主要问题是为什么我在主界面上的tabwidget标签上点击会报错?我只是用从线程向tableview里面赋值
离线pxiao_xiao

只看该作者 8楼 发表于: 2013-03-05
引用第7楼feiyang0725于2013-03-05 15:58发表的  :
现在主要问题是为什么我在主界面上的tabwidget标签上点击会报错?我只是用从线程向tableview里面赋值

你能不能换个思路.......
让你的辅线程和你的tabWidget进行connect
再由你的tabWidget向各个子页分发
还得同步 辅线程必须等UI线程操作完毕 才能继续提取数据
辅助线程提取完数据后交给UI线程并等待UI线程操作结束
离线feiyang0725

只看该作者 9楼 发表于: 2013-03-05
明白就是让从线程用signal和slot连接起来,让从线程调用主线程的槽函数
离线feiyang0725

只看该作者 10楼 发表于: 2013-03-05
可是这个信号和槽该怎么连接呢?从线程直接就是start就调用run方法了。。。
离线feiyang0725

只看该作者 11楼 发表于: 2013-03-05
刚才试过了,我之所以用从线程是因为主线程操作会让界面卡死,但是如果我用信号和槽连接那和直接调用主线程里面的函数效果一样的。界面会卡死。。
离线pxiao_xiao

只看该作者 12楼 发表于: 2013-03-05
在run()里面 未执行exec()之前 进行connect
数据量有多大?
离线jdwx

只看该作者 13楼 发表于: 2013-03-05
回 12楼(pxiao_xiao) 的帖子
把能把界面卡死的操作放进线程。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线pxiao_xiao

只看该作者 14楼 发表于: 2013-03-05
Re:回 12楼(pxiao_xiao) 的帖子
引用第13楼jdwx于2013-03-05 19:18发表的 回 12楼(pxiao_xiao) 的帖子 :
把能把界面卡死的操作放进线程。


他有辅助线程 在做数据收集工作 界面卡死的原因 某个界面操作时间太长  从前面分析 我只能问 数据量是不是很大 如果是  从辅助线程传递过来的数据应该给个指针 采用虚拟表单技术
快速回复
限100 字节
 
上一个 下一个