在groupBox中添加了一个QtableWidget,即表格组件。这个表格只有5列,只占据了表格的一部分,不是很好看。
核心代码如下,最重要的是最后一句,让标题栏自适应大小。
QTableWidget *taskListTable = new QTableWidget(20,5); //任务列表
taskListTable->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
taskListBoxLayout->addWidget(taskListTable);
//**表格标题
QStringList headTable = {"任务编号","起点","终点","需求时刻","载重量"};
taskListTable->setHorizontalHeaderLabels(headTable);
QFont font("song", 12, QFont::Bold);
taskListTable->horizontalHeader()->setFont(font); //设置字体
taskListTable->verticalHeader()->setHidden(true); //隐藏行标题
taskListTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
taskListTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
接下来解释一下这个函数,horizontalHeader返回的是表格的垂直行标题,也就是第一行标题栏。这是个特殊的类,叫QHeaderView类。对标题栏进行调整,往往就是对这个类进行调整。
setSectionResizeMode函数是上述类的一个函数,设置标题如何调整为给定模式所描述的大小。
QHeaderView::ResizeMode就是模式的枚举量,主要就是调整标题栏大小,即列宽。存在以下的取值:
模式值 | 描述 |
---|---|
QHeaderView::Interactive | 用户可以手动调节列宽,也可以通过调用resizeSection函数调整。 |
QHeaderView::Fixed | 用户无法手动调整列宽,只能调用resizeSection函数调整。 |
QHeaderView::Stretch | 列宽会自动调节以填充可用空间。大小不能由用户更改或以编程的方式更改。 |
QHeaderView::ResizeToContents | 列宽会自动根据内容调整为最佳大小。大小不能由用户更改或以编程的方式更改。 |