• 3926阅读
  • 0回复

[讨论]QSqltablemodel 作为返回值的时候 [复制链接]

上一主题 下一主题
离线lvhuat
 
只看楼主 倒序阅读 楼主  发表于: 2013-07-23
我的平台是QT4的,
已经被知道的情况是:QSqltablemodel 不是线程安全,在多线程中使用同一个QSqltablemodel会导致程序崩溃.
但是怎么才能把 QSqltablemodel 对象的指针作为返回值传递出去呢?
我想这样做:
  1. QSqltablemodel * getXXXmodel()
  2. {
  3.    QSqltablemodel* model  =  new QSqltablemodel(this);
  4.    model->setTable("T_table");
  5.    //.....do filter or something else............
  6.    if(model->select())
  7.   {
  8.       return model ;
  9.    }
  10.   return false;
  11. }



但是这样就内存泄露了(虽然我看到很多Qt的exemple和demo都这样做过,但是我自己却不敢),我设置而来parent但是作为一个长时间存在的单例模式,在程序的生命周期内,这些分配的内存都是浪费的.
我想问下
①什么时候才能在函数中无限制的new object 而不考虑delete
②怎么合适地返回model,既不会内存泄露,又不会有线程安全问题.
快速回复
限100 字节
 
上一个 下一个