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

Posted

技术标签:

【中文标题】将QCheckBox的状态保存在文件中,程序重启时加载状态【英文标题】:Save the state of QCheckBox in file, and load the state when program restarts 【发布时间】:2015-01-30 07:22:08 【问题描述】:

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

mysettingsdialog.cpp

void mysettingsdialog::onclick(bool checked)      //by AJ kpi conf

    if(myCheckBox->isChecked()==true)
    
        emit setlabelvisible();
    
    else
    
        emit setlabelinvisible();
    

ma​​inwindow.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 的值很容易,但我对如何使用复选框感到困惑。

【问题讨论】:

正如 Tay 所指出的,复选框的状态只是一个bool。要将其存储在文件中,您可以 static_cast 将其转换为整数,结果为 1 为真,0 为假 @Bowdzone 只要提到有一个三态复选框,所以复选框的状态并不总是bool。请查看我的编辑以获取更多详细信息。 【参考方案1】:
    创建一个容器来存储每个复选框的指针。 创建另一个容器来存储每个复选框的“状态”。对于二进制复选框,您可以使用isChecked() 来查询是否选中了复选框。否则,如果您使用三态复选框,则可以调用 checkState() 将状态作为枚举返回(参见编辑)。

    加载设置时,相应地为每个复选框分配状态。

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


编辑

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

QCheckBox 可选地提供第三种状态来表示“没有变化”。 当您需要为用户提供以下选项时,这很有用 既不选中也不取消选中复选框。如果你需要这第三个 状态,使用 setTristate() 启用它,并使用 checkState() 查询 当前切换状态。

【讨论】:

好吧,通过 QSettings,我认为使用 qsettings 对我的应用程序会更好.. 谢谢..

以上是关于将QCheckBox的状态保存在文件中,程序重启时加载状态的主要内容,如果未能解决你的问题,请参考以下文章

PyQt4单选框QCheckBox

day18 json与pickle

如何让Win10在重启关机或注销时自动关闭应用程序

FlinkFlink 模拟 kafka 消费重启后 能接着读取 保存状态信息

如何获取 PyQt 中 QGroupbox 中存在的 Qcheckbox 的状态

是否可以将 onclick 侦听器添加到 QCheckBox?