QPushButtons austauschen

Alles rund um die Programmierung mit Qt
Antworten
marcel87
Beiträge: 31
Registriert: 31. März 2013 20:25

QPushButtons austauschen

Beitrag von marcel87 »

Hallo.

Zunächst möchte ich gerne meinen Code zeigen:

Code: Alles auswählen

  
  if(b==1)
    {
     
    }

  if(b==2)
    {

    }

    QPropertyAnimation*animation= new QPropertyAnimation(Zeiger->Button, "geometry");/*Der "Button" soll je nach if-Abfrage ein anderer sein*/
    animation->setDuration(2000);
    QRect startposition(10,80,91,81);
    QRect endposition(250,130,91,81);

    animation->setStartValue(startposition);
    animation->setEndValue(endposition);
    animation->start();
Im oberen Teil des Codes frage ich ab ob b==1 bzw. b==2 ist. Demnach soll der "Zeiger" auf Button1 oder auf Button2 zeigen. Ich komme nicht dahinter, wie ich den "Button" durch Button1/Button2 austauschen kann.
Hat jemand nützliche Infos für mich oder auch Websites, die gleiche/ähnliche Problematik behandeln?

Generelle Infos: Ich arbeite mit Qt 5.0.1 und mit http://qt-project.org/.
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: QPushButtons austauschen

Beitrag von veeman »

Code: Alles auswählen

QPushButton *button;

if(b==1)
    {
     button = ui->button1;
    }
if(b==2)
    {
     button = ui->button2;
    }

 QPropertyAnimation*animation= new QPropertyAnimation(button, "geometry");
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: QPushButtons austauschen

Beitrag von RHBaum »

<klugsch.... mode an>
QPushButton *button;
Immer gleich angewoehnen, variablen zu initialisieren !!! Auch mit der Qt :-)
- kostet in dem Falle ned viel
- vermeidet aber "lustige" effekte, falls b mal was anderes als 1,2 ist ^^

wenn C++11:
QPushButton *button = nullptr;

ansonsten:
QPushButton *button = NULL;

<klugsch.... mode aus>

Ciao ....
Mr.Crank
Beiträge: 38
Registriert: 16. April 2013 15:21

Re: QPushButtons austauschen

Beitrag von Mr.Crank »

<wenn klugsch... denn richtig modus an>

um mögliche Fehler abzufangen und mit einen blick in die Zukunft ist hier eine Switch-Case
Anweisung sehr schön :P

switch(b)
{
case 1:button = ui->button1;
break;
case 2:button = ui->button2;
break;
// Hier können Case Anweisungen folgen
//Default ist alles was nicht auf die Cases zutrifft hier 2>b<1
defaul:button = NULL;
break;
}

<wenn klugsch... denn richtig modus aus>

diese bis zum exzess verstrickten if else sind nicht nur unschön, sondern kosten den Prozessor mehr
Zeit da alles abgefragt wird bis zum Punkt der Übereinstimmung (in deinen Fall keine Auswirkung).
Daher nur ein Tipp ;P

Gruß Mr.Crank

P.S. die von RHBaum angesproche Initialisierung sollte wie erwähnt immer durchgeführt werden.
Entweder am Punkt der Deklaration oder aber in einer eigenen Initialisieren Funktion mit aufruf
im Konstruktor ;)
marcel87
Beiträge: 31
Registriert: 31. März 2013 20:25

Re: QPushButtons austauschen

Beitrag von marcel87 »

Hallo!

Danke für die Tipps, obwohl mir dies bekannt ist. Vielleicht hätte ich erwähnen sollen, dass was ich hier an Quellcode hinterlegt habe, nicht mein Originalcode ist^^.
Das ist nur aus einer Datei, die ich zum Austesten nutze. Sobald etwas funktioniert, wie ich es mir vorstelle, dann implementiere ich es auch so gut wie ich es eben kann in die Originaldatei.

Zum Problem bzw. zur Problemlösung von "veeman": Auf diese Idee bin ich auch gekommen, leider hat das so nicht funktioniert.
So habe ich es gelöst.

Code: Alles auswählen

Zeiger->button=Zeiger->button1
P.S. Das Forum gefällt mir sehr, man bekommt hier gute Tipps und das auch noch so schnell. :D
Antworten