2011-01-13 4 views
2

Ich habe eine Klasse mit vielen privaten Variablen, die ich mit qspinboxes modifizieren kann. Ich kann es tun, indem ich für jede Variable, die mit der jeweiligen Spinbox verbunden ist, einen separaten Slot hat, aber der Code wird langwierig und repetitiv. Ich möchte wirklich einen einzigen Steckplatz haben, der die Adresse der zu ändernden Variable und ihren neuen Wert nimmt. Ich denke, ich könnte irgendwie qsignalmapper dafür verwenden, aber ich kann nicht herausfinden, wie. Kann jemand helfen? - vorzugsweise mit einem Beispiel, wie ich ein Anfänger QT-Programmierer bin. Ich verwende Qt4 mit C++ und Fedora 14Wie man effizient mehrere Qspinboxes behandelt, die jeweils eine separate Klassenvariable ändern

+0

schau mal hier http://stackoverflow.com/questions/1883160/qsignalmapper-and-original-sender – Raiv

Antwort

0

Was Sie wahrscheinlich tun möchten, ist eine benutzerdefinierte Unterklasse der Drehfeld erstellen, die auch verfolgen können, 1 Variable zu ändern. Erstellen Sie Ihre benutzerdefinierte Unterklasse anstelle des Drehfelds und übergeben Sie für jedes Drehfeld die Variable, die geändert werden soll. Innerhalb Ihrer benutzerdefinierten Klasse haben Sie einen Slot, der die ihm bekannte Variable ändert.

Es gibt Variationen zu dieser Idee, aber es ist eine einfache Möglichkeit, all diese Wiederholungen zu reduzieren.

+0

ARGH !, du schlägst mich dazu, meine alte Nemesis cjhuitt. Wissen Sie, wer ich bin? – Scott

+0

@Scott: Ich könnte eine Vermutung geben, wenn Sie in den letzten paar Jahren nach TX umgezogen sind. Und wenn das stimmt, könnten Sie einige Code-Beispiele kennen, die mich dazu bringen, die obige Lösung vorzuschlagen. –

+0

Yup, das bin ich: Mr. Object Librarian. Es war unheimlich zu sehen, dass du deine Antwort postest, als ich gerade dabei war, meine zu formulieren. Ich hoffe, es ist alles in Ordnung! – Scott

0

Vertrauen Sie mir, Sie wollen es soggen und haben nur eine Reihe von wiederholten connect() - Linien und Mitgliederzugriffsfunktionen. Ist doch nicht so schlimm. QSignalMapper ist für parameterlose Signale gedacht und verknüpft sie mit ganzzahligen IDs oder Zeigern zu QObjects. Das ist nicht dein Szenario.

Verwandte Themen