首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将QCheckBox状态保存在文件中,并在程序重新启动时加载状态

将QCheckBox状态保存在文件中,并在程序重新启动时加载状态
EN

Stack Overflow用户
提问于 2015-01-30 07:22:08
回答 1查看 1.2K关注 0票数 1

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

mysettingsdialog.cpp

代码语言:javascript
运行
复制
void mysettingsdialog::onclick(bool checked)      //by AJ kpi conf
{
    if(myCheckBox->isChecked()==true)
    {
        emit setlabelvisible();
    }
    else
    {
        emit setlabelinvisible();
    }
}

mainwindow.cpp

代码语言:javascript
运行
复制
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从文件中读取/写入值非常容易,但我对如何使用复选框来实现它感到困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-30 07:51:49

  1. 创建一个容器来存储每个复选框的指针。
  2. 创建另一个容器来存储每个复选框的“状态”。对于二进制复选框,可以使用isChecked()查询是否选中了复选框。否则,如果使用三状态复选框(请参阅编辑),则可以调用checkState()返回状态为enum。
  3. 加载设置时,相应地将状态分配给每个复选框。
  4. 您可以使用QSettings来管理这些设置,并将它们保存为ini文件。

编辑

只要提到有一个三状态复选框的选项。来自文件

QCheckBox可选择地为提供第三状态,以指示“无更改”。每当您需要给用户既不检查也不取消选中复选框的选项时,这是非常有用的。如果需要第三种状态,请使用setTristate(),启用它,并使用checkState()查询当前切换状态。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28231108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档