检测表单中任何小部件的状态是否发生了变化



我目前有一个表单与QStackedWidget。QStackedWidget内部有多个小部件。例如QLineEdit, QCheckBox, QLineEdit。现在我有一个"保存"按钮,只有在任何小部件的状态发生变化时才应该启用,否则它仍然是禁用的。我知道我可以去到每个单独的小部件,并进行适当的更改,以启用/禁用保存按钮。我想知道完成这项任务最快最简单的方法是什么?

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

现在您可以使用signal或savestate变量。

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

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

你可以将与状态变化相关的小部件的信号连接到插槽中以启用保存按钮:

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);
}

最新更新