Voici un exemple de SpinBox qui écrit ses modifications dans les variables sous-jacentes. Le principal problème que j'ai est valueChanged est appelé quand le widget est construit. Y a-t-il une manière plus élégante de faire ceci? Je pense que c'est bizarre que j'ai connecté un widget à lui-même, mais valueChanged n'est pas virtuel.En Qt, comment implémenter un widget qui reste cohérent avec les variables du code
class ValueWriterInt: public QSpinBox {
Q_OBJECT
public:
ValueWriterInt(vector<int*> const& value): myValue(value) {
QObject::connect(this, SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
}
~ValueWriterInt() {}
private slots:
void valueChanged(int new_value) {
for (auto it = myValue.begin(); it != myValue.end(); ++it)
**it = new_value;
}
private:
vector<int*> myValue;
};
Merci. C'est ce que j'ai fini par faire, mais il est extrêmement rassurant d'avoir une confirmation indépendante. valueChanged est appelé beaucoup plus souvent que je ne le pensais. Par exemple, l'appel de "setIndexWidget" entraîne l'appel de valueChanged sur le widget. Le bool aide là aussi. Merci encore! –