有没有办法自动调整QTableView最后一列的内容?

时间:2017-01-03 10:10:24

标签: qt qtableview

我的应用中有6列的表视图。所有列都是交互式的,最后一列也通过函数 QTableView :: setStretchLastSection 进行扩展。但是,如果我尝试将主窗口从最大大小调整为最小值(我的应用程序为1170x686),则最后一列会保持拉伸状态。我做了一个解决方法:

void MyTableView::resizeEvent(QResizeEvent* event)
{
    QWidget* widget = parentWidget();
    while (widget != nullptr && widget->parentWidget() != nullptr)
    {
        widget = widget->parentWidget();
    }
    if (widget != nullptr)
    {
        const int width = widget->width();
        const int height = widget->height();
        static const QSize s_minimumWindowSize(1170, 686);
        QAbstractItemModel* currentModel = model();
        if (width <= s_minimumWindowSize.width() && height <= s_minimumWindowSize.height() && currentModel != nullptr)
        {
            setColumnWidth(currentModel->columnCount() - 1, GetMinimumWidthForColumn());
        }
    }
    QTableView::resizeEvent(event);
}

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:-1)

检查表格的尺寸政策。 将水平和垂直策略设置为ignored通常可以解决这个问题。