将QCheckBox的状态保存在文件中,并在程序重新启动时加载状态
Save the state of QCheckBox in file, and load the state when program restarts
在我的GUI应用程序中,我的主窗口中有一些标签,标签的可见性是通过按下按钮(设置)时打开的对话框中的复选框控制的。现在,一切正常,即如果我打开设置对话框,我可以选中或取消选中复选框;因此,标签也被设置为可见或不可见。
我的设置对话框.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 和 QLineEdit 的文件读取/写入值很容易,但我对如何使用复选框执行此操作感到困惑。
- 创建一个容器来存储每个复选框的指针。
- 创建另一个容器来存储每个复选框的"状态"。对于二进制复选框,可以使用
isChecked()
查询是否选中了复选框。否则,如果使用三态复选框,则可以调用checkState()
将状态作为枚举返回(请参阅编辑)。 -
加载设置时,请相应地为每个复选框分配状态。
-
您可以使用
QSettings
来管理设置并将其另存为 ini 文件。
编辑
只需提及有一个三态复选框的选项。从文档中:
QCheckBox
选择性地提供第三种状态来指示"无更改"。 每当您需要为用户提供以下选项时,这很有用 既不选中也不取消选中复选框。如果你需要这第三个 状态,使用setTristate()
启用它,并使用checkState()
查询 当前切换状态。
相关文章:
- 如何从Clojure调用C++程序,以使程序保持打开状态?
- OpenCV 函数 cv::remap() 的执行时间更长,当程序在两者之间进入睡眠状态时
- 选择"Y"继续后,我的程序一直处于关闭状态
- 程序终止,状态为 -1073741510 在 for 循环的中间,将输入分配给二维数组
- 用于unique_ptr的有状态自定义删除程序
- Windows编程:为什么我们要将lParam转换为CREATESTRUCT来获取应用程序状态
- 检查特定应用程序的窗口是否处于最小化状态
- 如何在Windows C MFC应用程序状态栏中禁用CAP NUM SCRL指示器
- 从基本C/CPP Linux应用程序中展示状态信息
- 程序在cmd中工作,在cygwin中立即以状态127退出,在emacs shell中没有输出
- 我的链接列表程序在代码块编译器(X0000000005)中以状态-1073741819终止
- 信号处理程序和本地状态
- 当应用程序变为活动/非活动状态时获取通知
- 视图状态和应用程序设计
- 程序状态和调试器不一致
- 如何将有限状态机集成到我的应用程序中
- 当使用信号处理程序触发事件时,如何使boost.msm正确更改状态
- 有没有办法让控制台窗口在程序完成后保持打开状态,并在按键1次后关闭
- 简单c++程序Id的问题返回1退出状态
- MFC:如果程序以前在最大化状态下关闭,则'Maximized Button'错误