我将从描述我的 C++ GUI 应用程序开始。
我有一个主屏幕(主窗口),其中有许多显示各种数据的标签(kpi)。主屏幕中有一个设置按钮,按下它会打开一个设置对话框(consettingsdialog),其中包含主窗口标签和应用程序本身的各种参数设置。在设置对话框中按下保存按钮后,设置参数被保存。
如果在 consettingsdialog 中选中或取消选中相应的复选框,我的目标是使主窗口中的某些标签可见/不可见。
这是我到目前为止所做的细节;
在我的 consettingsdialog.cpp
ConSettingsDialog::ConSettingsDialog(QWidget *parent)
: QDialog(parent)
{
setupUi(this);
kpi1CheckBox->setChecked(true);
}
void ConSettingsDialog :: onSaveButton()
{
if(kpi1CheckBox->isChecked()==true)
{
kpi1CheckBox->setChecked(true);
emit setHomeScreenKpiVisibility();
}
else
{
kpi1CheckBox->setChecked(false);
emit setHomeScreenKpiInvisibility();
}
}
在我的 mainwindow.cpp
MainWindow::MainWindow(QWidget *parent):
QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_ConSettingsDialog =new ConSettingsDialog();
connect(m_ConSettingsDialog,SIGNAL(setHomeScreenKpiVisibility()),this,SLOT(setHomeScreenKpiVisibility()));
connect(m_ConSettingsDialog,SIGNAL(setHomeScreenKpiInvisibility()),this,SLOT(setHomeScreenKpiInvisibility()));
}
void MainWindow::setHomeScreenKpiVisibility()
{
ui->mylabel->setVisible(true);
}
void MainWindow::setHomeScreenKpiInvisibility()
{
ui->mylabel->setVisible(false);
}
代码构建完美,没有任何错误,但是当我运行它时,无论我取消选中该复选框多少次,标签都保持可见。当我打开设置时,我看到复选框被选中。
我尝试通过将kpi1CheckBox->setChecked(true);
consettingsdialog.cpp 更改为kpi1CheckBox->setChecked(false);
但随后主屏幕中的标签仍然可见(根本不可见)。尽管在这种情况下,设置对话框中的复选框被设置为永久禁用。
现在感觉完全卡住了,我做错了什么?