今天有个人问我怎么做这个,我也没做过啊,然后看看需求,结合我所知道的一点点知识来解决。
一、Qtablewidget类提供了丰富的接口,使用灵活度较高,但在批数据处理上不如tableview方便(仅个人观点啊,我Qt没学多久)。其中有个函数是setCellWidget()。下面是它的介绍。
void QTableWidget::setCellWidget(int row, int column, QWidget *widget)
Sets the given widget to be displayed in the cell in the given row and column, passing the ownership of the widget to the table.
If cell widget A is replaced with cell widget B, cell widget A will be deleted. For example, in the code snippet below, the QLineEdit object will be deleted.
可以将控件以QWidget的形式插入tabelwidget的item中。非常的好用(其实我也只是用过几次哈,没发现其他的办法,哈哈),在嵌入控件的时候。
二、嵌入多个radiobutton,这个嘛,就简单了嘛,一个布局轻松搞定。
三、判断状态,这个,哦,好像不能直接去操作哦。嗯,那就想办法获取它对应行列里面的radiobutton的对象。有个函数是
cellWidget,我先把某一行列的item通过这个函数送给QWidget里面,然后通过findchildren这个函数获取子对象,当前item里面的是widget,然后widget里面的就是radiobutton啦。
然后有了对象,还愁判断不了状态吗?OK,上代码。
QWidget *widget = ui->tableWidget->cellWidget(i,1); QList<QRadioButton*> rad = widget->findChildren<QRadioButton *>(); for(int i = 0; i<rad.count();i++) { if(rad.at(i)->isChecked()) { qDebug()<<rad.at(i)->objectName(); } }
这样就可以随便操作这个item里面的子对象啦,我记得还有个更好的方法,不过忘记了,所以呀,好记性不如烂笔头,我就把它写下来,加深下印象,
不要时间一久就遗忘了。同事也希望能帮到别人。能力有限,目前只想到这个方法,广大的coder有其他方法欢迎交流,共同进步。
完整工程已上传。地址:http://download.csdn.net/download/bugcong/10149718