• 11568阅读
  • 5回复

请教QTableView的使用 [复制链接]

上一主题 下一主题
离线ldqiang
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-19
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我想在界面显示一个table表格,内容如下:
第一列(为姓名):
李明1
李明2
李明3
李明4
李明5
李明6
还有200条数据

第二列(为数字):
32
22
787
99
555
55
22
还有200条数据

就这一个简单的表格,对于第一列,我将其姓名用一个QStringList来保存,然后直接用一个for来写入模型,如下:
QStandardItemModel  *model = new QStandardIteml(250, 2);
QStringList collist1;
collist1 << 第一列的所有姓名;
int namecount = collist1.size();
for(int i = 0; i < namecount; i ++)
  {
    model->setData(model->index(i, 0), collist1, Qt::displayRole);
  }
//在此我想请教一下如何保存第二列的数据,如果用 、
方法1:
model->setData(model->(0,1), value, Qt::DisplayRole)//这样一条一条保存的太麻烦了,而我用
方法2:
QStringList  valueList;
QString tmp;
valueList << tmp.setNum(value);//将其保存在一个链表中的话然后用和第一个一样的方式将其写入模型,但最后显示时却全是0,

QTableView view;
view->setModel(model);//关联到模型

请教大家一个如何更好啊,谢谢!
[ 此贴被ldqiang在2008-05-19 17:16重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2008-05-19
使用setItem()及appendRows()来做应该。
QStandardItemModel *model = new QStandarditemModel;
model->setColumnCount(2);    // 设置列数
model->setHeaderData();  //  就不写了,请参考文档
QStandardItem *item;
QList<QStandardItem *> items;
for (int i = 0; i < totalCount; i++)
{
    items.clear();
    item = new QStandardItem("李明");
    items.push_back(item);
    item = new QStandardItem("12.21");
    items.push_back(item);
    model->appendRow(items);
}
tableView->setModel(model);
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线lzian
只看该作者 2楼 发表于: 2008-05-20
----------------------------抛砖引玉:---------------------------------------------------
QStandardItemModel *sim = new QStandardItemModel;
QList<QStandardItem *> lst;
QList<QString> name;
name <<"Jerome" <<"Cheung" <<"John" <<"Tom";   
QStandardItem *si;
for(int j = 0; j< 2; j++)
{
    for(int i = 0; i < 4; i++)
    {
        si = new QStandardItem(name);
        lst.append(si);
    }       
    sim->appendColumn(lst);
    lst.clear();
    name.clear();
    name <<"123" <<"456" <<"789" <<"147";
}   
QTableView *tv = new QTableView;
tv->setModel(sim);
离线ldqiang
只看该作者 3楼 发表于: 2008-05-21
感谢!
离线hatoyu

只看该作者 4楼 发表于: 2008-06-23
对‘QTableView::setModel(QStandardItemModel&)’的调用没有匹配的函数
/usr/include/qt4/QtGui/qtableview.h:73: 附注: 备选为: virtual void QTableView::setModel(QAbstractItemModel*)

setModel好像不能 QStandardItemModel

上面的代码我报这个错误阿?
离线foxyz

只看该作者 5楼 发表于: 2008-06-23
对‘QTableView::setModel(QStandardItemModel&)’的调用没有匹配的函数
/usr/include/qt4/QtGui/qtableview.h:73: 附注: 备选为: virtual void QTableView::setModel(QAbstractItemModel*)

setModel好像不能 QStandardItemModel

上面的代码我报这个错误阿?

这个很简单!
你upcast一下
标准点的方法:
QAbstractItemModel* upmodel = dynamic_castt<QAbstractItemModel*> myModel;
if(upmodel != NULL)
    tableView.setModel(upmodel);

最简单的方法:tableView.setModel((QAbstractItemModel*) mymodel);
快速回复
限100 字节
 
上一个 下一个