Label skalieren??

Alles rund um die Programmierung mit Qt
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

nein!

du musst eine zweiteilung machen!

wenn sich der Wert der Spinnbox änder darauf reagieren. Größe des Bildes verändern und nen eigenes Signalauslösen welches ein Picture mit raushaut(das musst dann mit setPicture verbinden)
Das signal wird ausgelöst wenn du die Größe berechnet hast!
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ok danke, ich versuche es mal.
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

könnte ich vlt einen kleinen Code-Snippsel haben, damit ich einen Anfang habe??bitte.
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Codeschnippsel nicht, aber einen Lösungsansatz.

Das Problem am SIGNAL valueChanged(int) is ja, dass es einen int weiterreicht. Dieser int wird im SLOT als Parameter übergeben.
Dieser int (der Wert aus der SpinBox) stellt wahrscheinlich die Skalierung in % dar (100=Original, 50=Halbe Größe, 200%=Doppelte Größe, ...).

Speicher doch dein Bild, welches geladen wird, als private Member (QPixmap m_pix) deiner Klasse.
Definier dir einen SLOT resizeImage(int), welchen du mit dem SIGNAL(valueChanged(int)) der SpinBox connectest.
In diesem SLOT setzt du auf dein Label eine skalierte Version deines Bildes (m_label->setPixmap(m_pix.scaled(width, height)), wobei width und height aus dem Prozentwert berechnet werden).

Ich hoffe dieser Lösungsansatz reicht dir.

Grüße
Franz
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hallo,
danke für den Ansatz, hab es mal ausprobiert.
meine MemberVariable:

Code: Alles auswählen

protected:
		const QPixmap _mPix;
mein connect

Code: Alles auswählen

connect(spinBox, SIGNAL(valueChanged(int)),
			imageLabel, SLOT(resizeImage(int)));

Code: Alles auswählen

void TabEins::resizeImage(int){
	imageLabel->setPixmap(_mPix.scaled(100,100));
}
hab ich das jetzt alles richtig verstanden??(das mit dem speichern hab ich glaub nicht ganz verstanden)
lg
nici
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

sieht doch gut aus!
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

danke. Aber irgendwie fehlt mir da das QPicture, oder brauch ich das gar nicht??

lg

nici
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

wofür?

Code: Alles auswählen

protected: 
      const QPixmap _mPix;
aber warum const???? und warum protected??? so kan nst es doch net abändern...

reichts net es private zu machen oder gibts spez. Gründe weshalb es protected und const sein muss?
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ich dachte alle memberVariablen müssen const sein. Oder etwa nicht?? Ne ne , hast recht, das darf nicht const sein. ^^
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

neeee.... sie können klar... aber zwingen tut dich ja niemand. sonst könnte man sie ja nie verändern.

private QPixmap sollte eig ausreichen.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ja aber es funktioniert nicht, also ich kann die größe des Bildes nicht verändern.
Hmm mir fällt nichts ein ^^
Ginsengelf
Beiträge: 79
Registriert: 2. Mai 2007 10:21

Beitrag von Ginsengelf »

Code: Alles auswählen

void TabEins::resizeImage(int){
   imageLabel->setPixmap(_mPix.scaled(100,100));
}
Wenn du immer fix auf 100x100 skalierst, ändert sich da natürlich nix.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

was soll ich denn dort rein schreiben? width und height???(ne das geht nicht)
Hmm mir fällt nichts ein ^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

nici hat geschrieben:was soll ich denn dort rein schreiben? width und height???(ne das geht nicht)
Schreib doch die Höhe/Breite rein, auf die du skalieren willst ;)
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ja ne, die skalierung möchte ich dann mit dem slider oder der spinbox machen.
Hmm mir fällt nichts ein ^^
Antworten