您的位置:

qtableview列宽设置问题探讨

一、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);

上述代码设置了选择行为为单选,并且只能选中整行。