QT tablewidget滑动滑轮前两行前两列始终可见的方法
时间: 2023-08-29 16:06:10 浏览: 83
可以横向或者竖向滑动的listview并且保持第一列不变
要实现QT tablewidget中前两行和前两列始终可见,可以自定义一个QHeaderView,然后将其设置为tablewidget的纵向和横向表头。
具体实现步骤如下:
1. 自定义一个QHeaderView,例如:
```
class FixedHeader : public QHeaderView
{
public:
FixedHeader(Qt::Orientation orientation, QWidget *parent = nullptr) : QHeaderView(orientation, parent) {}
QSize sizeHint() const override {
QSize size = QHeaderView::sizeHint();
size.setHeight(50); // 设置表头高度为50
return size;
}
void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override {
painter->save();
QHeaderView::paintSection(painter, rect, logicalIndex);
painter->restore();
}
};
```
2. 在tablewidget中设置自定义的QHeaderView为纵向和横向表头,例如:
```
FixedHeader *vHeader = new FixedHeader(Qt::Vertical, ui->tableWidget);
FixedHeader *hHeader = new FixedHeader(Qt::Horizontal, ui->tableWidget);
ui->tableWidget->setVerticalHeader(vHeader);
ui->tableWidget->setHorizontalHeader(hHeader);
```
3. 在tablewidget中设置滚动条策略为Qt::ScrollPerPixel,即像素滚动,例如:
```
ui->tableWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
ui->tableWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
```
这样,就可以实现QT tablewidget中前两行和前两列始终可见了。
阅读全文