Seite 1 von 1

QPushButtons austauschen

Verfasst: 28. April 2013 19:09
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/.

Re: QPushButtons austauschen

Verfasst: 28. April 2013 21:00
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");

Re: QPushButtons austauschen

Verfasst: 29. April 2013 13:23
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 ....

Re: QPushButtons austauschen

Verfasst: 30. April 2013 13:58
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 ;)

Re: QPushButtons austauschen

Verfasst: 1. Mai 2013 10:41
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