Wert von Spinbox ändern, ohne dass valueChanged() ...
Verfasst: 1. Juni 2008 19:25
Damit ihr mein Problem verstehen könnt muss ich es leider etwas ausführlicher schildern.
In einem ListWidget werden eine Reihe von Werten angegeben, die mittels einer Spinbox veränderbar sein sollen. Jedem Item in der Spinbox ist ein Element einer QList zugeordner, dass genau den Index hat, der der Reihe im ListWidget entspricht. Nun möchte ich, dass automatisch per klick auf ein Item in der Listbox der entsprechende Wert in der Spinbox angezeigt wird. Also: ItemClicked() Signal des List Widgets mit einer Funktion verbinden, die bewirkt, dass das Element der Liste, welches dem ausgewählten Item des List Widgets entspricht in der Spinbox (setValue()) angezeigt wird. So weit so gut. Nun soll aber natürlich der Benutzer auch umgekehrt über die Spinbox den entsprechenden Einrag der Liste ändern können. Also valueChanged() der Spinbox mit einer Funktion verbinden, die bewirkt, dass der dem aktuellen Item des ListWidgets entsprechende Eintrag der Liste den vom Benutzer eingegebenen Wert verpasst bekommt. Einige von euch werden das Problem schon kommen gesehen haben. Wenn nun der Nutzer ein anderes Item des List Widgets auswählt, um den entsprechenden Wert der Liste zu verändern, so wird wiederum der aktuelle Wert in der Spinbox ausgegenen und - es kommt zu einer Rückkopplung, denn setValue() strahlt das valueChanged() Signal aus. Furchtbare Sache...
Kann mir jemand zufällig sagen, wie ich den Wert einer SpinBox verändere, ohne, dass valueChanged() ausgestrahlt wird, bzw. wie ich ein Signal zeitweilig deaktivieren kann?
In einem ListWidget werden eine Reihe von Werten angegeben, die mittels einer Spinbox veränderbar sein sollen. Jedem Item in der Spinbox ist ein Element einer QList zugeordner, dass genau den Index hat, der der Reihe im ListWidget entspricht. Nun möchte ich, dass automatisch per klick auf ein Item in der Listbox der entsprechende Wert in der Spinbox angezeigt wird. Also: ItemClicked() Signal des List Widgets mit einer Funktion verbinden, die bewirkt, dass das Element der Liste, welches dem ausgewählten Item des List Widgets entspricht in der Spinbox (setValue()) angezeigt wird. So weit so gut. Nun soll aber natürlich der Benutzer auch umgekehrt über die Spinbox den entsprechenden Einrag der Liste ändern können. Also valueChanged() der Spinbox mit einer Funktion verbinden, die bewirkt, dass der dem aktuellen Item des ListWidgets entsprechende Eintrag der Liste den vom Benutzer eingegebenen Wert verpasst bekommt. Einige von euch werden das Problem schon kommen gesehen haben. Wenn nun der Nutzer ein anderes Item des List Widgets auswählt, um den entsprechenden Wert der Liste zu verändern, so wird wiederum der aktuelle Wert in der Spinbox ausgegenen und - es kommt zu einer Rückkopplung, denn setValue() strahlt das valueChanged() Signal aus. Furchtbare Sache...
Kann mir jemand zufällig sagen, wie ich den Wert einer SpinBox verändere, ohne, dass valueChanged() ausgestrahlt wird, bzw. wie ich ein Signal zeitweilig deaktivieren kann?