检测表单中任何窗口小部件的状态是否已更改

时间:2014-05-28 15:38:58

标签: c++ qt

我目前有一个带有QStackedWidget的表单。 QStackedWidget里面有多个小部件。例如QLineEdit,QCheckBox,QLineEdit。现在我有一个“保存”按钮,只有在任何窗口小部件的状态发生变化时才会启用该按钮,否则它将保持禁用状态。我知道我可以访问每个单独的小部件并进行适当的更改,以启用/禁用保存按钮。我想知道完成这项任务的最快和最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

制作自定义小部件。使用该自定义小部件扩展所有输入。

现在你可以使用信号或savestate变量。

每当有变化发射信号时。传递此信号以保存按钮状态插槽。

在开始时它可能看起来很长但后来它会加快你的工作。如果您有基于UI的设计,也可以尝试推广课程。因此,自定义小部件在任何情况下都不会出现问题。

答案 1 :(得分:0)

您可以将与某些状态更改相关的小部件信号连接到插槽以启用保存按钮:

connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(enableSaveButton()));
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(enableSaveButton()));
connect(ui->checkBox,SIGNAL(toggled(bool)),this,SLOT(enableSaveButton()));

void MyWidget::enableSaveButton()
{
    ui->saveButton->setEnabled(true);
}