我正在尝试制作一个选项对话框,以在应用设置时尽可能多地节省时间。
使用的小部件分布在 4 个选项卡中,并且是一组框、复选框、单选按钮、文本输入字段、旋转计数器和组合框等可能的选择,但这些是最常见的。
我在每个选项卡中都有一个布尔标志,如果它上面的任何单个小部件以某种方式发生变化,我想将其更改为 true。这意味着当调用 apply 方法时,对话框可以检查每个选项卡的标志以查看选项卡是否已更改,如果未更改则忽略它。
下面是我当前解决方案的示例, setModified() 是设置标志的函数:
connect(chkShowFormula, SIGNAL(stateChanged(int)), this, SLOT(setModified()));
connect(chkShowAxis, SIGNAL(stateChanged(int)), this, SLOT(setModified()));
connect(cmbAxisType, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified()));
connect(cmbAxisType, SIGNAL(editTextChanged(QString)), this, SLOT(setModified()));
connect(cmbFormat, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified()));
connect(grpShowLabels, SIGNAL(clicked(bool)), this, SLOT(setModified()));
connect(btnAxesFont, SIGNAL(clicked()), this, SLOT(setModified()));
connect(btnLabelFont, SIGNAL(clicked()), this, SLOT(setModified()));
有没有更简洁的方法将所有这些信号绑定到同一个插槽?因为这只是我正在处理的信号量的一小部分。
我的另一个担心是这种方法几乎会不断触发,所以如果可能的话,我也在寻找另一种解决方案。