• 4246阅读
  • 6回复

[提问]急!!求解 qthread的运行 [复制链接]

上一主题 下一主题
离线caixinshou
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-05
我创建了一个qthread类的子类,在另一个类中定义了一个这样的对象,用于释放大量的动态分配空间(时间比较长),且在析构函数中调用子类的start()方法,但想单独让这个线程自动运行,不想在析构函数中调用wait()方法等待子线程运行完毕,这样浪费时间,而且界面会卡住一会儿,等析构完!           高手们,求解方法?十分感谢!!!!!
离线wxj120bw

只看该作者 1楼 发表于: 2011-12-05
回 楼主(caixinshou) 的帖子
没必要调用线程来释放内存吧
离线caixinshou
只看该作者 2楼 发表于: 2011-12-06
回 1楼(wxj120bw) 的帖子
因为要释放几万的QStandardItem *itemID2 = new QStandardItem(row[1]);动态分配空间,有点慢,导致界面卡住,有时候还会死机了,有没有好的方法释放?谢谢了!
离线wxj120bw

只看该作者 3楼 发表于: 2011-12-06
回 2楼(caixinshou) 的帖子
我想搞明白 QStandardItem应该是容器负责释放 你为什么要手动释放
离线caixinshou
只看该作者 4楼 发表于: 2011-12-07
回 3楼(wxj120bw) 的帖子
容器负责释放?不是很了解,请多多指教!谢谢!

我只知道QT有以下几种情况不需要释放内存:
1.如果在new的时候指定了父亲,那么它的清理时在父亲被delete的时候delete的;
2.放在setCentralWidget()中的那个QOBJECT,这个QOBJECT在new的 时候不必指定它的父亲,当整个QAPPLICATION没有时它就自动清理。

我现在遇到的情况是这样的:我创建了一个QMainWindow的对象,设置其中心对象为我自定义的几个类的对象,其中有一个类包含一个QTableView因为要显示3万多条数据,每条数据有8个字段,用到了24万的QStandardItem *newItem = new QStandardItem(QString)分配的空间,但是QStanddardItem 不能指定父对象,固方法1不行,方法2就更加不行了!因此,选择了自己释放,用一个QList类保存了这些指针,再想用脱离主线程的线程方法一次释放,不使跳转其他界面时卡一下。

再次感谢!
离线wxj120bw

只看该作者 5楼 发表于: 2011-12-08
回 4楼(caixinshou) 的帖子
你用QStanddardItem封装数据,为什么不自己定义结构来封装呢,这样QStanddardItem指定了父类,QStanddardItem的释放就不需要你操作了,你只需要考虑你定义结构声明的变量的释放问题
PS:忙了忘回复你了
离线caixinshou
只看该作者 6楼 发表于: 2011-12-08
回 5楼(wxj120bw) 的帖子
谢谢了!我试试 !
快速回复
限100 字节
 
上一个 下一个