我在后台开了一个线程,针对主窗口的tableView数据更新,每1秒更新一次,程序正常,不过时间一长就会崩溃,不知道是为什么。。。 另外我在线程里面有对数据库的操作,是专门创建的一个链接
------解决思路----------------------
你改成信号/槽的模式试试。线程里发信号,然后槽函数更新
------解决思路----------------------
楼主应该是新手,大家可以多给些耐心....but,如果不结贴给分,则坚决拉黑.
-------------------------------------------------------------------------
1.QStandardItemModel不是线程安全的么?
不单这个,几乎所有的系统下的所有的界面库,都不是线程安全的.vc的mfc,Qt的Gui,mac的Cocoa,(android的叫啥?),等等等,,,,你不能在线程里直接操作界面控件..
一般做法是:你在线程里,处理怪兽的各种思想活动....最后有结果了,在主线程,让怪兽前进一步,因为怪兽是一个控件,要在窗口里面画图的...
绝对不能在线程里让怪兽控件,前进一步...
楼上有人说:"你改成信号/槽的模式试试。线程里发信号,然后槽函数更新"
就是在线程里,跑到主线程控制控件,做完后再回到这个线程...
信号,应该是和发送消息差不多的机制...
例如,你有个线程:
void ThreadProc() {
//这些是你的怪兽控件做的思想活动,可以在线程里面干的活.
xxx;
xxx;
//然后思想活动完了,不能直接在这里,操作怪兽本身,让它前时一步.
//而是要跑到主线程里去,让怪兽前进一步.
PostMessage();或者emit(...);//这些都是跑到主线程里干的活,它会绑定到下面的OnMonsterResult事件..
//主线程的活干完后,可以接着让怪兽思想活动...
xxx;
xxx;
}
void OnMonsterResult() {
//这里是由线程跑来的,但这里是在主线程里哟.
}
-------------------------------------------------------------------------
2.线程并不是这么容易的,还有同步,锁等各种问题,你可以找些资料先学学...