"Gregor S." schrieb:
> Hi -
>
> ich habe mir heute mal ein bi�chen was zur Qt-Programmierung durchgelesen
> -u.a. auch aus dem letzten (oder vorletzten) Linux Magazin.
>
> Ich habe von dort das Listing2 abgetippt:
> --------------------------------------
> #include<qapplication.h>
> #include<qlabel.h>
> #include<qpixmap.h>
>
> int main (int argc, char *argv[]) {
>
> QApplication a(argc, argv);
>
> QLabel pic( 0 );
> QPixmap pm( "tux.png" );
> pic.setPixmap( pm );
> pic.setScaledContents( TRUE );
>
> //pic.setAlignment(AlignHCenter | AlignVCenter);
>
> a.setMainWidget( &pic );
> pic.show();
> return a.exec();
> }
> -------------------------------------
>
> kompiliert habe ich es mit dem Befehl:
> g++ datei.cpp -o datei -I$QTDIR/include -L$QTDIR/lib -lqt
>
> ich bekomme dann folgende Fehlermeldung:
> ---------------------------------------------
> hello2.cpp: In function `int main(int, char **)':
> hello2.cpp:9: call of overloaded `QLabel(int)' is ambiguous
>
> /usr/lib/qt/include/qlabel.h:36: candidates are:
> QLabel::QLabel(QWidget * =0, const char * = 0, unsigned int = 0)
>
> /usr/lib/qt/include/qlabel.h:38:
> QLabel::QLabel(const char *, QWidget * = 0, const char * = 0, unsigned int =
> 0)
>
> /usr/lib/qt/include/qlabel.h:87: QLabel::QLabel(const QLabel
> &) <near match>
>
> hello2.cpp:12: no matching function for call to `QLabel::setScaledContents
> (const bool &)'
> ----------------------------------------------------
> was muss ich den QLabel() �bergeben, wenn nicht 0?
> falls jmd. (gehe mal davon aus) die Zeitschrift hat - beim ersten Listing kam
> das gleiche. Da habe ich den text direkt in QLabel() geschrieben.
>
> -i need help
> greg
> ---------------------------------------------------------------------------
> PUG - Penguin User Group Wiesbaden - http://www.pug.org
Hallo,
ich habe die Zeitschriften nicht, aber, wo die Fehlermeldung herkommt, kann ich
mir vorstellen. In der Headerdatei stehen drei Versionen von QLabel drin. Jede
ist f�r andere Aufrufparameter gedacht (Das werden alle (?) wissen, ist hier nur
zur Motivation). Parameter, die im Header einen Wert erhalten (hier 0), k�nnen
weggelassen werden. Damit interessieren zun�chst nur die Parameter ohne einen
Wert. Daher bleibt als Variante der QLabel-Aufruf aus Zeile 36 (ohne Param), der
aus Zeile 38 (ein Param -ein String) und aus Zeile 87 (eine Adresse von einer
Instanz der Klasse, aus der die Funktion kommt). Damit sollte klar sein, warum
der Aufruf nicht geht -eine Integerzahl als Param ist dort immer nur mit anderen
zusammen angegeben (wenn die Vorgaben �berschrieben werden). Auch, warum er
meint, die Adresse w�re ein "near match", ist klar, denn ein Integer und eine
Adresse �hneln sich. Und schlie�lich ist auch klar, warum es mit einem String
ging, denn die Variante aus Zeile 38 braucht genau so etwas. Ich vermute (sicher
weis ich es nicht), dass dieser String die Titelzeile des Fensters enth�lt. Also,
Titel ausdenken und als String in Anf�hrungszeichen eintragen, dann: Versuch
macht klug. Oder die Null rauswerfen, dann sind wir bei Variante eins in Zeile
36. Variante 3 aus Zeile 87 geht zwar auch, aber daf�r muss wahrscheinlich pic
(die QLabel-Instanz) erst initialisiert werden -ziemlich viel Aufwand und es geht
ja wohl auch ohne.
Was die Frage nach "SetScaledContents" angeht: Da findet er die Funktion nicht.
Also: Header nachlesen und die Schreibweise kontrollieren, das sieht verflixt
nach 'nem Schreibfehler aus (kann ja auch ein Druckfehler sein). Allerdings geht
es auch hier auch ohne diese Aufruf. Daher kann man ihn auch auskommentieren (der
soll nur daf�r sorgen, dass "TUX" -der ist ja wohl in tux.png- im Fenster
skaliert wird -nur zum Test wird das sicher nicht gebraucht)
Tsch��
Manfred Preu�ig
---------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org