在QTableView / QTableWidget中禁用滚动区域

时间:2019-01-14 07:36:02

标签: c++ qt scroll tableview

我目前在QScrollArea中有一个QTableWidget,我想在需要时触发滚动区域的滚动条,而不是TableView上的滚动条。 我设法禁用了TableView的滚动条,但是没有触发另一个滚动条。

    auto *scroll = new QScrollArea;
    auto *scrollWidget = new QWidget;
    auto *gridLayout = new QGridLayout(scrollWidget);

    auto *table = new QTableWidget;

    table->setRowCount(3);
    table->setColumnCount(4);

    // Disable scroll bar of the table
    table->horizontalScrollBar()->setDisabled(true);
    table->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

    gridLayout->addWidget(table);

    scroll->setWidget(scrollWidget);
    scroll->setWidgetResizable(true);
    scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

我认为这与TableView的视口有关。也许是将视口调整为内容。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

固定设置表格的fixedWidth如下:

int size{ 0 };
for (int i = 0; i < table->columnCount(); ++i)
    size += table->columnWidth(i);

table->setFixedWidth(size);