如何使QTableView类的restoreState()和saveState()正确工作?
首先,我想说,我的问题已经在这里讨论过,在 这里是的。但答案并不是好的......
所以,这是问题:我有一个QTableView
类,有一个简单的模型
,与 tableView->setModel(model);
方法连接。例如,我有 4-5 列。我启动了我的项目应用程序并对列宽度进行了一些更改。按“退出”后,我的项目应用程序将 tableView->horizontalHeader()->saveState();
数据的状态与 QSettings
保存到文件中。当我再次启动我的应用程序时,它会生成如下内容:
tableView->horizontalHeader()->restoreState(/* data from settings ini file */);
但是,什么也没有发生!列宽具有标准宽度。它们不会随着我的存储值而改变! :(
谢谢!
PS:这个问题在 QTreeView
类中不会变得明显。使用 QTreeView
一切都可以!
First of all, I wanted to say, that my problem was already discuss here, on SO, and here it is. But the answers are not the good ones...
So, here is the problem: I have a QTableView
class, with a simple model
, connected with tableView->setModel(model);
method. For example, I have 4-5 columns. I started up my project application and made some changes with columns width. After I pressed Exit, my project app save state of the tableView->horizontalHeader()->saveState();
data with QSettings
to file. And when I starts up my app again, it makes something like this:
tableView->horizontalHeader()->restoreState(/* data from settings ini file */);
But, nothing happens! The columns widths has standard width. They are not changed with my stored values! :(
Thanks!
PS: This problem not become apparent with QTreeView
class. With QTreeView
all is ok!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我尝试重现您的问题,但一切对我来说都工作正常。这是我所做的:
使用 Qt-Designer,我在表单上放置了一个
QTableView
(名为tbvTest
)。在我的表单的构造函数中,这是我编写的内容:(
请注意,在我的
main.cpp
中,我设置了 应用程序名称, OrganizationName 和 OrganizationDomain)在我的析构函数中表单,这是我写的:
如果我运行应用程序并更改列宽,退出应用程序并再次运行它,列宽将正确恢复。
我做的事情和你有什么不同吗?
I tried to reproduce your problem, but everything is working fine for me. Here is what I did :
With Qt-Designer, I put a
QTableView
(namedtbvTest
) on my form.In the constructor of my form, here is what I've written :
(note that in my
main.cpp
, I set the ApplicationName, OrganizationName and OrganizationDomain)In the destructor of my form, here is what I've written :
If I run the application and change the column width, quit the app and run it again, the column widths are correctly restored.
Is there something I'm doing different from you ?