• 6608阅读
  • 9回复

QString 能不能转换位QSandardItem * const & ? [复制链接]

上一主题 下一主题
离线xiaobaiwen
 
只看楼主 正序阅读 楼主  发表于: 2008-11-04
— 本帖被 XChinux 执行加亮操作(2008-11-06) —
我是SQL语句从数据库中读到的类容,然后将其赋给QString 变量:id = query.value(0).toString();
再定义 QList<QStandardItem *> items;  想用items.append(id),  把值添加到一个类型位QStandardItemModel *  的 model 中, 最后把这个model添加到tableView 中  ,最后将读出的数据通过表格显示出来。

错误提示是:'append' : cannot convert parameter 1 from 'class QString' to 'class QStandardItem *const & '

部分代码如下:

QStandardItemModel *model = new QStandardItemModel;
QStringList longList = (QStringList() << "id" << "first name" << "last name");
model->setHorizontalHeaderLabels(longList);
tableView->setModel(model);

QSqlDatabase *db = new QSqlDatabase;
if(!createConnection(db)){
      return false;
}

QSqlQuery query(*db);
query.prepare("select * from person where id = :id");
query.bindValue(":id", vid);

if(query.exec()){

    QStandardItem *item;
    QList<QStandardItem *> items;
    QString id, fname, lname;

    while(query.next()){
            items.clear();
            id = query.value(0).toString();
            items.append(id);

            fname = query.value(1).toString();
            items.append(fname);
            lname = query.value(2).toString();
            items.append(lname);
            model->appendRow(items);
      }
}
[ 此贴被xiaobaiwen在2008-11-04 22:14重新编辑 ]
离线wljfox
只看该作者 9楼 发表于: 2008-11-05
你的意思 是说 你也把直接用SQL语句读出数据再显示在table中 而不是用Qt提供的例子中的方法咯。 你是如何实现的列? 可否看一下你的源码?


________________________________
这个如果用QTableWidget的话,很好实现的,一个个ITEM地加!
离线wljfox
只看该作者 8楼 发表于: 2008-11-05
我也是新手,在摸索呢!哈,如果按照你的方法主不是只要model中的值,table里就会直接反应效果呢?

如果是这样的话,只要修改model值后,向数据库里执行相应修改的SQL就可以啦!
离线xiaobaiwen
只看该作者 7楼 发表于: 2008-11-05
引用第6楼wljfox于2008-11-05 15:40发表的 :
嗯 ,我看了你的代码!是个好办法!
我现在想当修改某条记录的时候需要更新QList这个对象中的值,不知道QList查找记录效率怎么样?
看下我这个贴子吧:http://www.qtcn.org/bbs/read.php?tid=13701,里面是一个关于这个问题的QT DEMO,感觉他这种做法不可思议!



你的意思 是说 你也把直接用SQL语句读出数据再显示在table中 而不是用Qt提供的例子中的方法咯。 你是如何实现的列? 可否看一下你的源码?
你现在是想在显示数据的表中 直接修改 数据 再将他们 添加到数据库中吗?
我也想实现这种功能, 但好像只有用 例子中的 方法才行啊! 你要是有办法 可否告诉我一下?
一个人自学,真是难那!!  什么都只能一个一个的试
离线wljfox
只看该作者 6楼 发表于: 2008-11-05
嗯 ,我看了你的代码!是个好办法!
我现在想当修改某条记录的时候需要更新QList这个对象中的值,不知道QList查找记录效率怎么样?

看下我这个贴子吧:http://www.qtcn.org/bbs/read.php?tid=13701,里面是一个关于这个问题的QT DEMO,感觉他这种做法不可思议!
离线xiaobaiwen
只看该作者 5楼 发表于: 2008-11-05
引用第4楼wljfox于2008-11-05 11:03发表的  :
我也正为QT中显示sql过来的数据烦恼着,不想用QSqlTableModel,感觉太不灵活了!
不知道有没有好的方式用TABLEVIEW或者TABLEWIDGET来显示QSqlQuery中的数据!



正和我的想法一样,我现在已经把 显示功能搞定, 搞了很久啊! 初学 如果你还需要可以参考 我把这个源码发来:
附件: res.rar (3 K) 下载次数:8
离线wljfox
只看该作者 4楼 发表于: 2008-11-05
我也正为QT中显示sql过来的数据烦恼着,不想用QSqlTableModel,感觉太不灵活了!
不知道有没有好的方式用TABLEVIEW或者TABLEWIDGET来显示QSqlQuery中的数据!
离线xiaobaiwen
只看该作者 3楼 发表于: 2008-11-05
这是第一次用Qt  也没人教啊!
用表格显示数据 这样的功能  在Qt中还有别的更好的方面吗?
上面我用的 也是在qtcn.org中找到的,不知道是不是还有别的方法,
有用过这方面功能的高手们 可否简单提醒一下吗?
离线xiaobaiwen
只看该作者 2楼 发表于: 2008-11-05
引用第1楼sbtree于2008-11-04 22:34发表的 :
修改一下 items.append(id);
items.append(new QStandardItem (id));



非常感谢楼上的回答, 问题以解决。

还想问下就是:new QStandardItem (id)
用的应该是QStandardItem ( const QString & text ) 这个函数吧?
assisant 里QStandardItem 就有这个好像对应上面这个语句, 但是 要求的
参数是const QString & 类型的啊? 是要常量吧?

好久没看C/C++的 东西了,我也说不清楚咯,好像const 都要用常量! 应该是我搞错了
不过好像 以前经常应为给const 变量赋值  结果出问题咯!
也不知道是记错了,还是什么我没搞懂的原因,大家看看,解释一下咯!
离线sbtree
只看该作者 1楼 发表于: 2008-11-04
修改一下 items.append(id);
items.append(new QStandardItem (id));
windows 7 + VC++2008 + Qt4.5.2
快速回复
限100 字节
 
上一个 下一个