Hallo, folgendes Problem: Ich habe mir mit Qt eine kleine Oberfläche gebaut, auf der mehrere Buttons sind. Nun geht es um die Darstellung des Buttons, wenn er gedrückt ist. Ist ein Button gedrückt, dann wird ein Event ausgelöst. In diesem Event setze ich ein Flag und werte es in meiner Applikation aus. Wenn flag_button_xy gesetzt, dann zeichne Bild 1, wenn nicht gesetzt, dann Bild 2. Wird der Button losgelassen, dann wird wieder ein Event ausgelöst, indem dieses Flag gelöscht wird. Natürlich funktioniert dieser Ansatz und ist für ein paar Buttons auch ok. Jedoch wollte ich mal nachfragen, ob es nicht einen besseren Weg gibt, damit ich mir die sämtlichen Flags sparen kann. Danke für eure Antworten. Gruß Mike
Du kannst die Signale benutzten und im Objekt darüber mit einem Slot verbinden. Es gibt (abgeleitet von QAbstractButton)die Signale "pressed" und "released". In dem Slot kannst du dann Ändern der Pixmap abstoßen.
Mike schrieb: > Ich habe mir mit Qt eine kleine Oberfläche gebaut, auf der mehrere > Buttons sind Hi. Und benutze am besten qbuttongroup. Dann schreibst nur einen Slot für jeden Button Signal. Im Slot fragste den Button als addresse ab, oder setzt vorher jedem Button eine id, mit setid. Mfg
Ich habs nun einfach über eine Get Funktion gemacht. Das ist schon einmal deutlich besser als mit den Flags. Der nächste Versuch wird dann wohl in Richtung Slots gehen. Vielen Danke schon einmal für die Denkanstöße!!! Gruß Mike
Für mich klingt es, dass du neu bei Qt bist? Falls ja mach erstmal ein zwei Übungsaufgaben mit dem Creator und Signal/Slots. Konzeptionel und damit auch von der SW Architektur her ist es ein Unterschied, ob du über GetXY(); Methoden ein Pollng realisierst, oder ob du es über Signal/Slots löst. Was ich am Anfang gemacht habe, war einmal (wie es wohl jeder macht), eine Oberfläche mit einem Button und einer weiteren Fläche, die ihre Farbe wechseln soll, wenn man draufdrückt. Das zweit war eine Art Uhr. Dazu im Creator eine Ui gebastelt, die nur zwei Ziffern besteht. Von der mit der erzeugten Klasse dann 3 Instanzen anlegen und die so nebeneinander darstellen, dass man das Ziffernformat HH:MM:SS hat. Der Witz ist dann, die Sekunden Instanz mit einem Timer triggern zu lassen und bei Überlauf des MaxWertes die nächst höhere Zahl inkrementieren zu lassen. Dem entsprechend muss man die Insnzen über Signale und Slots sinnvoll zu verbinden. Außerdem muss die eigenen Signal und Slots definieren (kein Hexenwerk) Wenn man das gemacht hat, hat man das Prinzip ganz gut verstanden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.