我有一个带自定义模型的QTableView,它运行正常。但是,当我启动程序时,我希望行和列的大小适合,因为默认情况下它们会占用太多空间。我应该注意到我的表有65k行(只有3列),它们总是一样的。以下代码工作正常,但速度很慢。
memorListView是一个QTableView。在此之前,我setModel
到我的自定义模型
memoryListView->resizeRowsToContents();
memoryListView->resizeColumnsToContents();
就像我提到的,这完全符合我的需要,但运行大约需要8秒。我认为这是因为所有数据都需要从模型中拉出来,当视图很高兴懒得请求它时。
我可以手动设置行和列大小,这是我当前的解决方法,但这是一个跨平台的应用程序,我不想担心不同的小部件,文本大小,DPI等导致问题。我可以自动调整一行行,然后将其余部分设置为该行的大小,这是正确的,但看起来非常黑客。
我希望我只是天真地这样做,并且有一些选项我可以切换它会让它变得更快。我知道所有的行和列都是相同的大小;我可以告诉它以某种方式使用该提示吗?
提前致谢。
答案 0 :(得分:2)
您可以使用QFontMetrics
简单地测量文本的宽度,然后将列宽设置为它。这样的事情应该有效:
QFontMetrics fontMetrics(yourWidget->font());
int columnWidth = fontMetrics.width("some text");