• 6246阅读
  • 11回复

一个关于QSqlQueryModel得奇怪的问题 [复制链接]

上一主题 下一主题
离线yiyangzhi111
 
只看楼主 正序阅读 楼主  发表于: 2011-07-10
我自己写了一个类来操作数据,在头问件得类声明中加入了:
  1. QSqlQueryModel *reQueryModel

然后在类的构造函数中加入:
  1. reQueryModel=new QSqlQueryModel();

但是在类的成员函数种调用  
  1. reQueryModel->setQuery("select * from userTable",dbconn);
  2. QTableView *show=new QTableView();
  3. show->setModel(reQueryModel);
  4. show->show();
  5. return reQueryModel;

结果死活显示不出来查询得结果,(db已经open了,把reQueryModel设置成这个函数得局部变量是可以出结果得)。
QSqlQueryModel *reQueryModel=new QSqlQueryModel();放在类文件得cpp得头部,还是不行,只有把QSqlQueryModel *reQueryModel=new QSqlQueryModel();放在调用reQueryModel得成员函数中才可以,求解这是为什么46

离线xhxui

只看该作者 11楼 发表于: 2011-07-14
  1. reQueryModel=new QSqlQueryModel(dbconn);
  2. //这里应该指定你的连接对象的名字dbconn

提示:在run你的程序时,在qt的3 Application Output那里会有一些说明,往往那里都写着解决问题的思路。

离线yiyangzhi111
只看该作者 10楼 发表于: 2011-07-12
感觉应该是显示得问题,因为我用qDebug()<<(showModel->record(0));是能看到结果的,手动修改数据库文件,数据库中相应的表种有数据得时候运行的效果是这样的:,而手动删除数据库中得数据后运行效果则是这样的:
离线alexltr

只看该作者 9楼 发表于: 2011-07-11
不好意思,你所用的系统我不是很了解。
我认为,如果不指定路径,程序会搜索当前文件夹,所以要确保exe所在的文件夹有指定的数据库。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线yiyangzhi111
只看该作者 8楼 发表于: 2011-07-11
发现一个问题了,就是直接双击运行得时候结果出不来,但是在终端中./Qprj062是可以出来结果得,在setDatabaseName(path),种path写成绝对路径就可以了。不过貌似我的程序里还是不行,继续找…… code.7z (12 K) 下载次数:1
离线yiyangzhi111
只看该作者 7楼 发表于: 2011-07-11
想要达到得效果就是这个意思,就是在头文件种定义QSqlQueryModel*,然后在类中再new。
另:不好意思,我的是linux系统,编译后老是提示driver not load
离线alexltr

只看该作者 6楼 发表于: 2011-07-10
Qprj062.rar (564 K) 下载次数:6 sorry. QSqlQueryModel是不需要select的。
附件供参考。不知道你指的是不是这个意思。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线yiyangzhi111
只看该作者 5楼 发表于: 2011-07-10
回复楼上,QSqlQueryModel是不需要select得吧,我换成QSqlTableModel,select了,还是同样得问题,把QSqlTableModel *设置为局部变量就可以,全局得或是类得就不可以。
离线alexltr

只看该作者 4楼 发表于: 2011-07-10
model->select();没有?
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线yiyangzhi111
只看该作者 3楼 发表于: 2011-07-10
疯了,代码改几下又不行了,太纠结了
离线yiyangzhi111
只看该作者 2楼 发表于: 2011-07-10
但是貌似new必须在成员函数种写,在构造函数或者其他地方写new还是不行
离线yiyangzhi111
只看该作者 1楼 发表于: 2011-07-10
好吧好吧,我在构造函数得初始化列表中加了个reQueryModel(NULL),或者在构造函数中直接写reQueryMode=NULL,然后再new就行了
快速回复
限100 字节
 
上一个 下一个