一、qtableview设置列宽无效
在使用qtableview的过程中,有时我们会遇到设置列宽无效的问题。首先我们可以检查一下代码中是否正确设置了列宽,如下设置列宽为100:
table->setColumnWidth(0, 100);
如果代码正确无误,但仍然无效,那么我们可以考虑设置stretchLastSection属性。
table->horizontalHeader()->setStretchLastSection(true);
设置该属性后,最后一列会自适应拉伸,以填满表格空间。
二、qtableview设置表头
qtableview的表头是通过horizontalHeader()方法获取的,并且可以设置表头的具体内容,如下:
table->horizontalHeader()->setVisible(true); table->horizontalHeader()->setDefaultAlignment(Qt::AlignHCenter); table->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("Age") << tr("Gender")); table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
上述代码设置了表头的可见性,对齐方式,以及具体的表头内容和列宽自适应方式。
三、qtablewidget设置列宽比例
与qtableview相似的还有qtablewidget,它也可以设置列宽比例。我们可以通过设置水平方向的最小列宽、最大列宽以及每列之间的比例,来达到设置表格列宽的目的。
widget->horizontalHeader()->setMinimumSectionSize(50); widget->horizontalHeader()->setMaximumSectionSize(100); widget->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); widget->horizontalHeader()->setStretchLastSection(true); widget->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents); widget->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch);
上述代码设置了每列的最小和最大宽度,以及第一列的宽度自适应和第二列的自动拉伸。
四、qtreeview设置列宽
qtreeview可以使用resizeColumnToContents()方法来自适应列宽,也可以使用setColumnWidth()方法来手动设置列宽。
tree->resizeColumnToContents(0); tree->resizeColumnToContents(1); tree->setColumnWidth(2, 100);
上述代码演示了自适应第一、第二列的列宽,并手动设置第三列的宽度为100。
五、设置qtablewidget选取
我们也可以设置qtablewidget的选取方式以及选取行为。
widget->setSelectionBehavior(QAbstractItemView::SelectRows); widget->setSelectionMode(QAbstractItemView::SingleSelection);
上述代码设置了选择行为为单选,并且只能选中整行。