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

Posted

技术标签:

【中文标题】有没有办法自动调整 QTableView 的最后一列的内容?【英文标题】:Is there way to automatically resize content of the last column for QTableView? 【发布时间】:2017-01-03 10:10:23 【问题描述】:

我的应用中有 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】:

检查您的桌子的大小政策。 将水平和垂直策略都设置为 ignored 通常可以解决这个问题。

【讨论】:

以上是关于有没有办法自动调整 QTableView 的最后一列的内容?的主要内容,如果未能解决你的问题,请参考以下文章

QTableView根据内容自动调整列宽行高

QTableView根据内容自动调整列宽行高

QTableView根据内容自动调整列宽行高

QTableView高级选择

尝试在 QTableView 中编辑单元格时调用 QFileDialog

有没有办法将 QTableView 模型转换为 QStandardItemModel