在QTableView中调整行和列的大小是非常慢的
Sizing to fit rows and columns in a QTableView is very slow
我有一个自定义模型的QTableView,它工作得很好。然而,当我启动程序时,我希望行和列的大小适合,因为默认情况下它们占用了太多的空间。我应该注意到,我的表有65k行(只有3列),它们总是相同的。下面的代码可以正常工作,但是非常慢。
memorListView是QTableView。在这行之前,我将setModel
添加到我的自定义模型
memoryListView->resizeRowsToContents();
memoryListView->resizeColumnsToContents();
就像我提到的,这正是我需要的,但它需要大约8秒来运行。我认为这是因为所有的数据都需要从模型中取出,而视图则乐于偷懒地请求它。
我可以手动设置行和列的大小,这是我目前的解决方案,但这是一个跨平台的应用程序,我不想担心不同的小部件,文本大小,dpi等引起的问题。我可以自动调整一行的大小,然后将其余的设置为该行的大小,这将是正确的,但看起来非常粗糙。
我希望我只是在天真地做这个,有一些选项我可以切换,使它更快。我知道所有行和列的大小都是一样的;我能告诉它如何使用这个提示吗?
您可以简单地使用QFontMetrics
测量文本的宽度,然后设置它的列宽度。像这样的代码应该可以工作:
QFontMetrics fontMetrics(yourWidget->font());
int columnWidth = fontMetrics.width("some text");
相关文章:
- QTableView:endMoveRows在模型中重置水平页眉大小
- OpenGL大的3D纹理(>2GB)非常慢
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 将QIcon添加到QTableView单元格
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- G++ C++17 类模板参数推导在非常特殊的情况下不起作用
- 使用浮点数和双精度数的非常小数字的数学
- 如何在QTableView中排序和更改日期格式
- QTableview Search
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- 我从int x[3]得到的一个非常奇怪的输出;
- 反向迭代器在C++中非常奇怪的行为
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 我的自定义使用 std::unordered_map 的性能非常慢
- QTableView 拉伸标头,但保持交互性
- ifstream 尝试读取 9 到 13 之间的无符号字符时非常奇怪的行为
- 一个非常简单的win32套接字代码,但工作错误
- 非常快速地阅读 CSV 文件
- max_element() 给出非常奇怪的错误消息
- 在QTableView中调整行和列的大小是非常慢的