Eine kurze frage bzgl Icon/Pixmap Handling

Verschiedenes zu Qt
Antworten
Zwen++
Beiträge: 2
Registriert: 22. November 2017 15:08

Eine kurze frage bzgl Icon/Pixmap Handling

Beitrag von Zwen++ » 22. November 2017 15:52

Sehr geehrte QT Community,

Zusammenfassende Frage::

Wie kann ich PushButtons Sinnvoller Bilder zuordnen als in dem Unten stehendem Code?
Bzw. in einer Klasse initalisieren um Sie letztendlich nur noch dem PushButton zuzuordnen?


Lange Version::
ich habe zurzeit ein kleines Projekt welches auch recht Simpel ist, allerdings bin ich eher Programmier-Anfänger und habe ein kleines Problem.

Und zwar ist das Programm für einen Kunden gedacht, der am Anfang ein paar Bilder anklickt, dann kommt noch ein Formular Fenster welches er ausfüllt und daraus soll eine PDF Datei erstellt werden.

Das Menü in dem die Bilder angeklickt werden sollen besteht aus PushButtons. Die haben am Anfang auch schon Bilder von dem QT Creator bekommen. Die Bilder sollen sich dann je nach Klick verändern, also es sollen dann andere Bilder in die Pushbuttons geladen werden.

Ich habe es zwar hinbekommen das es macht was ich möchte, allerdings schätze ich, dass dies eine sehr schlechte Methode ist.
Die Funktion die die Bilder in die Icons lädt, ist eine Void Funktion und erstellt die Variablen immer wieder neu, ich habe schon versucht zumindest die Icons in einer eigenen Klasse zu initalisieren, damit ich Sie dann nur noch zuordnen muss. Aber das habe ich irgendwie nicht hinbekommen,

Code: Alles auswählen


  void Dialog_Kunde::Wohnlandschaft_Menue(){
  
    //erster button
    QPixmap Bild1(":/Sofa_Hocker/Sofa_Links.png");
    QIcon ButtonIcon1(Bild1);
    ui->PB_Stuhl_Bank_Sessel->setIcon(ButtonIcon1);
    ui->PB_Stuhl_Bank_Sessel->setIconSize(Bild1.rect().size());
    ui->PB_Stuhl_Bank_Sessel->setFixedSize(Bild1.rect().size());

    //zweiter Button
    QPixmap Bild2(":/Sofa_Hocker/Sofa.png");
    QIcon ButtonIcon2(Bild2);
    ui->PB_Sofa_Hocker->setIcon(ButtonIcon2);
    ui->PB_Sofa_Hocker->setIconSize(Bild2.rect().size());
    ui->PB_Sofa_Hocker->setFixedSize(Bild2.rect().size());

    //Dritter Button
    QPixmap Bild3(":/Sofa_Hocker/Sofa_Rechts.png");
    QIcon ButtonIcon3(Bild3);
    ui->PB_Bett->setIcon(ButtonIcon3);
    ui->PB_Bett->setIconSize(Bild3.rect().size());
    ui->PB_Bett->setFixedSize(Bild3.rect().size());

}

so sieht zurzeit die Void Funktion aus. Und das wird im Prinzip falls ein Menue zurück geklickt wird wiederholt.

Vielleicht kann mir jemand den Vorgang hier kurz Stack Technisch erklären?
Also ich verstehe das mit meinen derzeitigen Wissenstand so.

Also Bild1 und ButtonIcon1 sind neu angelegte "Schubladen" auf dem Stack,
die über den Pointer dem Objekt auf dem Heap(Push-button) zugewiesen werden.
Oder eher kopiert? sonst würden Sie ja nicht mehr angezeigt werden, da Bild1 und ButtonIcon1 ja nach dem Stapel weg sind.


Ich habe über Pointer nachgedacht.
Also einen Vector<QIcon> z.b und darauf einen Pointer und über den Pointer die Icons den PushButtons zuordnen.

Aber in Verbindung mit den ganzen Klassen und QT bin ich noch ein wenig überfordert und konnte auch kein Beispiel finden außer das hier https://doc.qt.io/qt-5/qtwidgets-widget ... ample.html. Ich schätze das wäre auch die Lösung aber das Versteh ich noch nicht so ganz, ich müsste das wahrscheinlich auseinander nehmen und verinnerlichen. Allerdings sind das wieder Labels die dort benutzt werden. Naja wäre wirklich froh wenn ihr eine Anregung für mich hättet.

Dies ist allerdings auch mein erstes Projekt, davor habe ich eher gelesen und kleine Konsolen Sachen geschrieben + die Beispiele aus den Büchern die ich mir zugelegt habe. SFML habe auch schon ein bisschen rumprobiert und wäre QT nicht gewesen hätte ich mein Programm versucht mit SFML zu schreiben( was wahrscheinlich ein bisschen umständlicher gewesen wäre).

Ich programmiere das Projekt in QT Creator 4.3.1 auf Windows 7.

Natürlich stellen sich für mich jetzt schon weitere Fragen wie es dann später aussieht mit den Bildern, wenn ich die über den Creator einfüge ob das später so Sinnvoll ist wenn das Programm z.b auf einem anderen Rechner installiert wird, ob es dann nicht Sinnvoller ist das gleich mit Code zu machen. ( Also ich weis QT schreibt in dem Fall ja den Code für einen selbst aber ja bin Anfänger, ist einfach so ein Hintergedanke. Kenne zwar den Begriff Makefiles bin aber leider noch nicht zu dem Kapitel in meinem Buch gekommen).

Naja sorry für soviel Text.
Zuletzt geändert von Zwen++ am 22. November 2017 16:15, insgesamt 5-mal geändert.

TimsonC2000
Beiträge: 27
Registriert: 12. August 2004 17:57
Kontaktdaten:

Re: Eine kurze frage bzgl Icon/Pixmap Handling

Beitrag von TimsonC2000 » 22. November 2017 16:08

Text ist viel zu lang um hier eine kurze Frage raus zu lesen um dann vielleicht eine Antwort zu schreiben.

Zwen++
Beiträge: 2
Registriert: 22. November 2017 15:08

Re: Eine kurze frage bzgl Icon/Pixmap Handling

Beitrag von Zwen++ » 22. November 2017 16:16

Habe es Editiert und eine Zusammenfassende Frage am Anfang des Textes formuliert.
Sorry :/.

Antworten