在QTableView中不使用委托插入checkbox的方法

来源:互联网 发布:一楼土木人淘宝没了 编辑:程序博客网 时间:2024/05/12 05:30


正在看如何使用qt的委托,在这里先把如何不用委托做到在tableview中插入checkbox的方法写出来,之后再把用委托的方法写出来。


1、正常设置modeltableview

<pre name="code" class="plain">QStandardItem *headerItem0=new QStandardItem(QObject::tr("checkbox"));QStandardItem *headerItem1=new QStandardItem(QObject::tr("id"));model->setHorizontalHeaderItem(0,headerItem0);model->setHorizontalHeaderItem(1,headerItem1);tableView->setModel(model);

2、向model插入每一行时加入checkbox,使用的是setIndexWidget()这个方法:

<pre name="code" class="plain"><pre name="code" class="plain">QCheckBox *ch;while(query.next()){        QStandardItem *item0=new QStandardItem();        QStandardItem *item1=new QStandardItem(query.value(0).toString());        //设置可编辑性        item0->setEditable(true);        item1->setEditable(false);        QList<QStandardItem*> items;        items.append(item0);        items.append(item1);        model->appendRow(items);//新建checkbox对象,设置该对象属性并把它传给tableview        ch=new QCheckBox;  ch->setCheckable(true);//设置可选        ch->setEnabled(true);//设置不可编辑        ch->setChecked(false);        tableView->setIndexWidget(model->item(i,0)->index(),ch);        i++;}

 

3、读取tableviewcheckbox的值:

int rowNum=tableView->currentIndex().row();QCheckBox *check=new QCheckBox;check=static_cast<QCheckBox*>(tableView->indexWidget(model->index(rowNum,0)));  //不用代理也可以在tableview用简单的checkbox了if(check->isChecked())        ui->lineEdit_find->setText(QString("Y"));else        ui->lineEdit_find->setText(QString("N"));



0 0