QTableWidget setCellWidget,CellWidget的宽度如何随列宽改变而改变,Qt C++代码
时间: 2024-03-10 20:44:10 浏览: 210
Qt例程源代码QTableWidget.7z
可以通过设置QTableWidget的horizontalHeader()的sectionResized()信号与自定义的槽函数来实现CellWidget的宽度随列宽改变而改变。具体的Qt C++代码如下:
```cpp
#include <QApplication>
#include <QTableWidget>
#include <QHeaderView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableWidget tableWidget;
tableWidget.setColumnCount(2);
tableWidget.setRowCount(2);
// 为第一个单元格设置一个自定义的QWidget
QWidget *cellWidget = new QWidget();
cellWidget->setStyleSheet("background-color: yellow;");
tableWidget.setCellWidget(0, 0, cellWidget);
// 监听表头的sectionResized信号
QObject::connect(tableWidget.horizontalHeader(), &QHeaderView::sectionResized, [&](int logicalIndex, int oldSize, int newSize){
// 如果是第一列,将第一个单元格的宽度设置为新的大小
if(logicalIndex == 0){
tableWidget.cellWidget(0, 0)->setFixedWidth(newSize);
}
});
tableWidget.show();
return a.exec();
}
```
在上面的代码中,我们首先创建了一个QTableWidget,并为第一个单元格设置了一个黄色的QWidget。然后我们监听了表头的sectionResized信号,并在自定义的槽函数中判断了被改变的列是否为第一列,如果是,则将第一个单元格的宽度设置为新的大小。这样,当我们改变第一列的宽度时,第一个单元格的宽度也会相应地改变。
阅读全文