我正在尝试为应用程序创建一个配置菜单框,并使用 QDialog 框来显示用户可以更改的选项。此框包含 QComboBoxes 和 QLineEdits,但数量很多(7 个组合框和 12 个行编辑)。底部有一个名为“应用更改”的 QPushButton,仅当框中的任何属性发生更改时才应启用。
我是否必须将来自每个小部件的每个信号链接到一个插槽以单独启用按钮,或者当其组成小部件发生变化时 QDialog 框本身是否发出信号?
现在我有这个:
connect(Combo1,SIGNAL(activated(QString)),this,SLOT(fnEnable(QString)));
connect(Combo2,SIGNAL(activated(QString)),this,SLOT(fnEnable(QString)))
后面还有 17 行这些连接。
void MyClass::fnEnable(QString)
{
ApplyButton->setEnabled(true); //It is initialised as false
}
我想知道是否有更短的方法来做到这一点,也许(就像我之前提到的)QDialog 发出的信号(我在 documentation 中找不到)
我知道这不会加快程序速度,因为只调用所需的连接,但它会进一步尝试使更雄心勃勃的对话框变得更容易。
最佳答案
实际上并没有这样的信号,但是一种方法是创建一个QComboBox
的列表,然后用for建立连接,例如:
QList <*QCombobox> l;
l<<combobox1<< combobox2<< ....;
for (auto combo: l) {
connect(combo, &QComboBox::activated, this, &MyClass::fnEnable);
}
QLineEdit
也是如此。
关于c++ - 当对话框中的任何小部件发出信号时,是否可以调用插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275895/