qtableview绘制表头
时间: 2023-08-30 12:06:29 浏览: 89
Qt中使用QTableWidget绘制数据表格的实例
4星 · 用户满意度95%
要绘制QTableView的表头,可以继承QHeaderView类并重写其中的paintEvent()方法。在该方法中,可以使用QPainter类绘制表头的外观,例如文字、线条和背景。
以下是一个简单的示例代码,可以绘制一行表头,包含三个列:
```cpp
class MyHeaderView : public QHeaderView {
public:
MyHeaderView(Qt::Orientation orientation, QWidget *parent = nullptr)
: QHeaderView(orientation, parent) {}
protected:
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.fillRect(event->rect(), Qt::lightGray); // 绘制背景
painter.setPen(Qt::black);
painter.setFont(QFont("Arial", 12));
int x = 0;
for (int i = 0; i < count(); ++i) {
QRect rect = sectionViewportPosition(i);
QString text = model()->headerData(i, orientation()).toString();
painter.drawText(rect.adjusted(x, 0, 0, 0), Qt::AlignLeft | Qt::AlignVCenter, text); // 绘制文字
x += sectionSize(i);
painter.drawLine(rect.topRight(), rect.bottomRight()); // 绘制竖线
}
painter.drawLine(event->rect().bottomLeft(), event->rect().bottomRight()); // 绘制底线
}
};
```
在使用该表头时,可以将其设置为QTableView的水平或垂直表头:
```cpp
MyHeaderView *header = new MyHeaderView(Qt::Horizontal, tableView);
tableView->setHorizontalHeader(header);
```
阅读全文