【问题标题】:Auto-resize columns of QTableView programmatically以编程方式自动调整 QTableView 的列大小
【发布时间】:2021-01-24 15:56:36
【问题描述】:

我的程序中有一个 QTableView,我想自动调整它的大小。我使用了函数

headerViewHorizontal->setSectionResizeMode(QHeaderView::ResizeToContents);
headerViewHorizontal->setSectionResizeMode(3, QHeaderView::Stretch);

调整它的大小,它适用于我调整窗口大小时。但随后我需要在表中插入一行,这可能需要调整列的大小。我的问题就在这里。当我插入一行时,其中一个字段太大并且系统用树点写入它(例如:“12.03 ...”而不是“12.03.2020”)。我需要调整窗口大小以使系统调整列的大小。

我可以调用一个槽来强制更新列宽吗?

提前谢谢你!

PS 我正在使用 Qt5 和 c++。

【问题讨论】:

  • 是的,但是这个功能会将所有列的大小调整为那里的内容,因此即使是应该处于拉伸模式的列也会适应其内容。
  • 链接函数调整特定列的大小。 (我省略了 arg。但只是以 () 为后缀表示链接转到成员函数。)因此,您可以自己决定(或将其包装成条件)resizeColumnToContents() 是否应用于是否可拉伸。
  • void QTableView::resizeColumnToContents(int column)
  • 我认为这个函数会增加有问题的列并向右推动彼此。事实并非如此。谢谢!

标签: c++ qt resize qtableview qheaderview


【解决方案1】:

感谢@Scheff,我的问题得到了解答。

解决方案是将resizeColumnToContent() 用于没有拉伸调整大小模式的列之一。会互相更新。

编辑:此解决方案仅在您调用 resizeColumnToContent() 的列必须更改其宽度时才有效。否则你必须互相调用 resizeColumnToContent(int column)。

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多