qt - QTableWidget 滚动到上一个值
问题描述
我有一个 QTableWidget。在这个 QTableWidget 中,我加载了 500 行(7 列)。用户可以通过垂直滚动条滚动行。我想保存垂直滚动条值并在下次启动时自动应用它。我做了什么:在关闭事件中我保存垂直滚动条值:
saveToFile(myQTableWidget->verticalScrollBar()->value());
在关闭事件中,为了调试,我添加了以下几行:
qDebug() << "Scroll Min " << myQTableWidget->verticalScrollBar()->minimum();
qDebug() << "Scroll Max " << myQTableWidget->verticalScrollBar()->maximum();
qDebug() << "Scroll Val " << myQTableWidget->verticalScrollBar()->value();
输出是:
Scroll Min 0
Scroll Max 58811
Scroll Val 34758
在启动时,我从文件中读取值:
int scrollValue = loadFromFile(myFileName);
现在在变量 scrollValue 中我的值是 34758。
然后我在 QTableWidget 中加载 500 个元素并运行以下代码:
myQTableWidget->setRowCount(500);
for(int i = 0; i < 500; i++) {
myQTableWidget->setItem(i, 0, ...);
}
//EDIT 15-11-2019
myQTableWidget->resizeRowsToContents(); // <- The guilty row
qDebug() << "Scroll Min " << myQTableWidget->verticalScrollBar()->minimum();
qDebug() << "Scroll Max " << myQTableWidget->verticalScrollBar()->maximum();
if (scrollValue > 0)
myQTableWidget->verticalScrollBar()->setValue(scrollValue);
奇怪的是输出和之前的不一样(行号不变):
Scroll Min 0
Scroll Max 14906
1)即使 QTableWidget 包含完全相同的项目,为什么 Scroll Max 也不同?2)有没有更好的方法来做到这一点?
解决方案
QTableWidget 也有类似的问题。滚动条的值未更新。
尝试:myQTableWidget->update();
插入新项目后。滚动条的值现在应该适合。
推荐阅读
- pine-script - 如何使用内置“句点”变量?
- google-sheets-api - Google Sheet API - 如何仅获取更新的行
- powershell - 通过批处理脚本执行 PowerShell 时,我想存储该 PowerShell 的执行状态日志文件
- python - 将一列的行拆分为熊猫数据框中的不同列
- mongodb - lambda 中的 Apollo Server 慢 10 倍
- javascript - 上传 S3 对象时访问被拒绝
- reactjs - 如何在点击反应时重新渲染同一页面
- css - 列表中边框之间的间距
- ios - 我可以在 Swift 中创建自定义注解吗?
- mysql - 将休眠生成器值从增量更改为本机