gpt4 book ai didi

qt - 如何使 restoreState() 和 saveState() 对 QTableView 类正常工作?

转载 作者:行者123 更新时间:2023-12-04 13:34:22 25 4
gpt4 key购买 nike

首先,我想说,我的问题已经在这里讨论过,在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 中不明显类(class)。与 QTreeView一切正常!

最佳答案

我试图重现您的问题,但对我来说一切正常。这是我所做的:

使用 Qt-Designer,我放了一个 QTableView (名为 tbvTest )在我的表格上。

在我的表单的构造函数中,这是我写的:

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
ui->tbvTest->setModel(new TableModel);

QSettings MySetting(QSettings::IniFormat, QSettings::UserScope, "Test");
QByteArray MyArray = MySetting.value("column_width", "").toByteArray();
ui->tbvTest->horizontalHeader()->restoreState(MyArray);
}

(请注意,在我的 main.cpp 中,我设置了 ApplicationNameOrganizationNameOrganizationDomain )

在我的表单的析构函数中,这是我写的:
Widget::~Widget()
{
QByteArray MyArray = ui->tbvTest->horizontalHeader()->saveState();
QSettings MySetting(QSettings::IniFormat, QSettings::UserScope, "Test");
MySetting.setValue("column_width", MyArray);

delete ui;
}

如果我运行应用程序并更改列宽,退出应用程序并再次运行它,列宽将正确恢复。

我和你做的有什么不同吗?

关于qt - 如何使 restoreState() 和 saveState() 对 QTableView 类正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3656978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com