【发布时间】:2010-09-07 08:26:27
【问题描述】:
首先,我想说的是,我的问题已经在这里、在 SO 和 here it is 上讨论过。但答案并不好……
所以,这里是问题:我有一个QTableView 类,有一个简单的model,与tableView->setModel(model); 方法连接。例如,我有 4-5 列。我启动了我的项目应用程序,并对列宽进行了一些更改。按下退出后,我的项目应用程序将tableView->horizontalHeader()->saveState(); 数据的状态与QSettings 保存到文件中。当我再次启动我的应用程序时,它会变成这样:
tableView->horizontalHeader()->restoreState(/* data from settings ini file */);
但是,什么都没有发生!列宽具有标准宽度。它们不会随着我存储的值而改变! :(
谢谢!
PS:这个问题在QTreeView 类中并不明显。 QTreeView 一切正常!
【问题讨论】:
-
restoreState() 返回 true 或 false 以指示它是否成功。你的返回是真的吗?
-
@Arnold Spence 用我所有的
QTableView和QTreeView做restoreState() 时我得到了true 值... -
在您的启动中,您何时调用 restoreState()?一些简短的搜索似乎表明您希望等到应用程序完成启动并初始化所有内容。作为一个实验,您可以尝试在应用程序中添加一个按钮或菜单,以便在应用程序运行后调用恢复,看看它是否有效。
-
@Arnold 嗯,我仍然认为这只是
QTableView基类问题 - Qt 错误。因为,我尝试使用简单的 Qt 演示示例(使用 QTableViews)来恢复状态,但仍然没有运气。我不想在我的项目中添加额外的代码,因为我认为基本的 Qt 功能(保存/恢复标题状态)必须正常工作!但我会再尝试一个示例,在程序运行时从内存中保存/恢复标头设置.. -
内存 saveState/restoreState 方法有效!..
标签: qt save restore qtableview