1

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

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

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

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

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

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

提前致谢。

4

1 回答 1

2

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

QFontMetrics fontMetrics(yourWidget->font());
int columnWidth = fontMetrics.width("some text");
于 2011-11-20T07:10:24.357 回答