调整大小以适应QTableView中的行和列非常慢

时间:2011-11-20 05:53:33

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

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

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

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

就像我提到的,这完全符合我的需要,但运行大约需要8秒。我认为这是因为所有数据都需要从模型中拉出来,当视图很高兴懒得请求它时。

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

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用QFontMetrics简单地测量文本的宽度,然后将列宽设置为它。这样的事情应该有效:

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