QT tablewidget滑动滑轮第一行第一列始终可见的方法
时间: 2023-08-26 14:03:44 浏览: 70
要使QT tablewidget中的第一行第一列始终可见,可以使用setCornerButtonEnabled()函数。
具体的做法是,在创建tablewidget后,调用setCornerButtonEnabled()函数并将其设置为true。这将启用tablewidget中的一个小部件,该部件位于表的左上角,使用户可以快速滚动到表的开头。
以下是示例代码:
```
QTableWidget *tableWidget = new QTableWidget(parent);
tableWidget->setCornerButtonEnabled(true);
```
这样,当用户使用滚动条或滑轮滚动tablewidget时,第一行第一列将始终可见。
相关问题
QT tablewidget滑动滑轮前两行前两列始终可见的方法
要实现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中前两行和前两列始终可见了。
QT tablewidget固定第一行第一列的方法
要固定QT tablewidget中的第一行第一列,可以使用setVerticalHeaderItem和setHorizontalHeaderItem方法来设置表头项,然后使用setCellWidget方法将需要固定的单元格设置为QWidget,即可实现固定。
具体实现步骤如下:
1. 使用setVerticalHeaderItem方法设置第一列表头项,例如:
```
QTableWidgetItem *item = new QTableWidgetItem();
item->setText("固定行");
ui->tableWidget->setVerticalHeaderItem(0, item);
```
2. 使用setHorizontalHeaderItem方法设置第一行表头项,例如:
```
QTableWidgetItem *item = new QTableWidgetItem();
item->setText("固定列");
ui->tableWidget->setHorizontalHeaderItem(0, item);
```
3. 使用setCellWidget方法将需要固定的单元格设置为QWidget,例如:
```
QLabel *label = new QLabel();
label->setText("固定单元格");
ui->tableWidget->setCellWidget(0, 0, label);
```
这样,就可以实现QT tablewidget中的第一行第一列固定了。