【问题标题】:Sizing to fit rows and columns in a QTableView is very slow调整大小以适应 QTableView 中的行和列非常慢
【发布时间】:2011-11-20 05:53:32
【问题描述】:

我有一个带有自定义模型的 QTableView,它工作正常。但是,当我启动程序时,我希望行和列的大小适合,因为默认情况下它们占用了太多空间。我应该注意到我的表有 65k 行(只有 3 列),而且它们总是相同的。以下代码运行良好,但速度很慢。

memorListView 是一个 QTableView。在此行之前,我setModel 到我的自定义模型

memoryListView->resizeRowsToContents();
memoryListView->resizeColumnsToContents();

就像我提到的,这正是我需要的,但运行大约需要 8 秒。我认为这是因为所有数据都需要从模型中提取出来,否则视图很乐意懒惰地请求它。

我可以手动设置行和列的大小,这是我目前的解决方法,但这是一个跨平台的应用程序,我不想担心不同的小部件、文本大小、DPI 等会导致问题.我可以自动调整 one 行的大小,然后将其余行设置为该行的大小,这将是正确的,但看起来很 hacky。

我希望我只是天真地做这件事,我可以切换一些选项来让它更快。我知道所有行和列的大小都相同;我可以告诉它以某种方式使用该提示吗?

提前致谢。

【问题讨论】:

    标签: c++ qt qt4 qtableview qt4.7


    【解决方案1】:

    您可以简单地使用QFontMetrics 测量文本的宽度,然后将列宽设置为它。类似的东西应该可以工作:

    QFontMetrics fontMetrics(yourWidget->font());
    int columnWidth = fontMetrics.width("some text");
    

    【讨论】:

    • 嗯,我会试一试。看起来很有希望。
    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2018-01-18
    • 2016-09-17
    • 2013-04-24
    • 2013-08-20
    相关资源
    最近更新 更多