gpt4 book ai didi

c++ - 将QCheckBox的状态保存在文件中,程序重启时加载状态

转载 作者:行者123 更新时间:2023-11-30 02:41:18 27 4
gpt4 key购买 nike

在我的 GUI 应用程序中,我的主窗口中有一些标签,标签的可见性是通过按下按钮(设置)时打开的对话框中的复选框控制的。现在,一切正常,即如果我打开设置对话框,我可以选中或取消选中复选框;因此,标签也设置为可见或不可见。

mysettingsdialog.cpp

void mysettingsdialog::onclick(bool checked)      //by AJ kpi conf
{
if(myCheckBox->isChecked()==true)
{
emit setlabelvisible();
}
else
{
emit setlabelinvisible();
}
}

主窗口.cpp

MySettingsDialog* myset=new MySettingsDialog(this);
connect(myset,SIGNAL(setlabelvisible()),this,SLOT(enable1()));
connect(myset,SIGNAL(setlabelinvisible()),this,SLOT(disable1()));

void MainWindow::enable1()
{
ui->label->setVisible(true);
qDebug()<<"VISIBLE label";
}
void MainWindow::disable1()
{
ui->label->setVisible(false);
qDebug()<<"INVISIBLE label";
}

现在的问题是,每次我的应用程序重新启动时,它都不会保留以前的复选框状态。所以我想将复选框的状态保存在一个变量中并将其写入文件,这样每当我的应用程序启动时,它都会读取该文件并相应地设置复选框的状态。

我的问题是,如何将复选框的“状态”存储在变量中并将其写入文件。并再次使用相同的设置复选框的状态???

我的意思是从文件读取/写入 QLabels 和 QLineEdits 的值很容易,但我对如何使用复选框进行操作感到困惑。

最佳答案

  1. 创建一个容器来存储每个复选框的指针。
  2. 创建另一个容器来存储每个复选框的“状态”。对于二进制复选框,您可以使用 isChecked()查询复选框是否被选中。否则您可以调用 checkState()如果您使用三态复选框(请参阅编辑),则将状态返回为枚举。
  3. 加载设置时,相应地为每个复选框分配状态。

  4. 您可以使用 QSettings管理设置并将它们保存为 ini 文件。


编辑

只是提到有一个三态复选框的选项。来自 the document :

QCheckBox optionally provides a third state to indicate "no change". This is useful whenever you need to give the user the option of neither checking nor unchecking a checkbox. If you need this third state, enable it with setTristate(), and use checkState() to query the current toggle state.

关于c++ - 将QCheckBox的状态保存在文件中,程序重启时加载状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28231108/

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