当前位置: 代码迷 >> QT开发 >> qtableview可能qtablewidget能不能拆分表头,效果如图
  详细解决方案

qtableview可能qtablewidget能不能拆分表头,效果如图

热度:496   发布时间:2016-04-25 02:57:21.0
qtableview或者qtablewidget能不能拆分表头,效果如图?
如题,效果如图,网上查了下资料,没看到类似操作。本来我打算隐藏表头,通过合并单元格达到类似效果,但是又需要用到数据库,用到qsqltablemodel数据模型,如果占用2行表格达到类似效果的话导入数据就不方便了。
 
------解决思路----------------------
前一段日子刚好也研究过这个问题。好像不行。要实现估计也只能自己实现一个 headData 了,当时由于进度紧没有深入下去。
------解决思路----------------------
我也遇到过这种情况,但是自己实现headData比较复杂,我就用了最初级的方法解决,就比如你这个情况,就是创建一个最根本的Qtablewidget,它的表头为“过球”、“主管泄漏”、“全车泄露”,也就是个3列的表格,然后在每一列的第一行中添加子表格
QTableWidget *rootWidget = new QTableWidget(this);
rootWidget->setColumnCount(3);
rootWidget->setRowCount(1);
rootWidget->horizontalHeader()->setStretchLastSection(true);
rootWidget->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("过球")
<< QString::fromLocal8Bit("主管泄漏") << QString::fromLocal8Bit("全车泄漏"));

QTableWidget *widget1 = new QTableWidget;
widget1->setColumnCount(2);
widget1->setRowCount(1);
widget1->horizontalHeader()->setStretchLastSection(true);
widget1->verticalHeader()->setVisible(false);
widget1->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("结果")
<< QString::fromLocal8Bit("球编号"));
QTableWidget *widget2 = new QTableWidget;
widget2->setColumnCount(2);
widget2->setRowCount(1);
widget2->horizontalHeader()->setStretchLastSection(true);
widget2->verticalHeader()->setVisible(false);
widget2->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("结果")
<< QString::fromLocal8Bit("漏泄量"));
QTableWidget *widget3 = new QTableWidget;
widget3->setColumnCount(2);
widget3->setRowCount(1);
widget3->horizontalHeader()->setStretchLastSection(true);
widget3->verticalHeader()->setVisible(false);
widget3->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("结果")
<< QString::fromLocal8Bit("漏泄量"));

rootWidget->setCellWidget(0,0,widget1);
rootWidget->setCellWidget(0,1,widget2);
rootWidget->setCellWidget(0,2,widget3);
------解决思路----------------------
引用:
我也遇到过这种情况,但是自己实现headData比较复杂,我就用了最初级的方法解决,就比如你这个情况,就是创建一个最根本的Qtablewidget,它的表头为“过球”、“主管泄漏”、“全车泄露”,也就是个3列的表格,然后在每一列的第一行中添加子表格
QTableWidget *rootWidget = new QTableWidget(this);
rootWidget->setColumnCount(3);
rootWidget->setRowCount(1);
rootWidget->horizontalHeader()->setStretchLastSection(true);
rootWidget->setHorizontalHeaderLabels(QStringList() << QString::fromLocal8Bit("过球")
<< QString::fromLocal8Bit("主管泄漏") << QString::fromLocal8Bit("全车泄漏"));
。。。
rootWidget->setCellWidget(0,2,widget3);

猫咪同学的这个方法应该可以;而且连代码够给出来了,赞~
PS; 楼主为啥搞个 33 分? 奇怪的数字。
  相关解决方案