Seite 1 von 2
Anfänger versteht nichts...
Verfasst: 23. März 2007 17:08
von SoundsO
Ich weiß das diese Frage SUPER Basic ist und hoffentlich von jedem in 10 s. beantwortet ist, aber ich komm irgendwie nicht weiter und alle Beispiele sind entweder so simple, das sie mir nicht helfen, oder direkt zu kompliziert. Haben in der Uni mit qt3/vc++ angefangen und jetzt wollte ich zuhause mit qt4/vc++ arbeiten, und da scheint einiges anders zu sein. Mein Problem ist, ich versteh nicht wie ich aus meinem Funktionscode heraus beispielsweise einen Labeltext ändere. Vieleicht hat jemand ein passendes Beispiel!
Habe ein Qt-Applikation Projekt erstellt, mit dem Designer meine Anwendung mit einigen Labels versehen und im Quellcode im Konstruktor einen Timer erzeugt und mit einer Funktion slot "setLabels()" versehen so das diese jetzt nach jedem Timer aufgerufen wird. Aber wie kommt die Funktion jetzt an das Label??? Sicher ist das ein Basic, aber ich finde nichts wo ich es kappiere. Leider auch kein großer C++-Kenner. Da ich in Spanien bin auch schwer mit eng./deut. Literatur. Vielen Dank für euer Verständniss!
Code: Alles auswählen
class Counter : public QMainWindow
{
...
public slots:
void setLabels();
};
Code: Alles auswählen
Counter::Counter(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
..
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(setLabels()));
timer->start(1000);
setLabels();
}
void Counter::setLabels()
{
// HIER SOLL DAS LABEL GESETZT WERDEN
}
Verfasst: 23. März 2007 17:41
von lepsai
in dem Konstruktor schrebste: ui.setupUi(this);
dann in
void Counter::setLabels()
{
ui.myLabel->setText("fdfgdfgdf");
}
Verfasst: 23. März 2007 18:01
von SoundsO
Haha, manchmal ist die Welt soooo einfach! Vielen Dank...
Verfasst: 23. März 2007 19:31
von lepsai
Besonders die Qt-Welt ist sehr einfach...

Verfasst: 23. März 2007 19:36
von SoundsO
Hab auch langsam gefallen an Qt gefunden. Jetzt wollt ich in meiner Anwendung ein Bild darstellen. Dachte es wäre am einfachsten eine xpm-Datei zu erstellen, diese im Designer als Resource zuzufügen und einem Label als pixmap zu geben. Klappt auch super ... im Designer. Nach dem kompilieren seh ich kein Bild. Hab ich was vergessen? Gibt es sonst einen guten Weg einfach ein Bild (jpg...) darzustellen? Hab ohne Erfolg was mit QGraphicsView und Co. rumgespielt aber noch nichts erreicht.
Verfasst: 23. März 2007 19:42
von lepsai
Wenn du eine XPM schon erzeugt hast, dann kannste sie in deiner CPP-Datei inkludieren (XPM ist ein ASCII-Format) und dann die darin beschriebene Variable direkt für die Instanzierung der QPixmap benutzen.
Bei GraphicsView kannste QGraphicsPixmapItem benutzen um dein Bild darzustellen:
QGraphicsScene myScene;
QGraphicsView myView(&myScene);
myScene.addItem(new QGraphicsPixmapItem(myPixmap, &m_scene));
myView.show();
Verfasst: 23. März 2007 20:12
von SoundsO
Also so hat es jetzt beim kompilieren geklappt, aber das Feld ist immer noch leer (im Header natürlich auch ein #include "foto.xpm"). Kann was mit dem Bild nicht stimmen? Wie gesagt, im Designer wird es angezeigt wenn ich es einem Label zuweise... Wie würde ich ein jpg reinbekommen? Über QImage? Nochmal danke für die super Hilfe.
Code: Alles auswählen
QGraphicsScene scene;
ui.graphicsView->setScene(&scene);
QPixmap pixmap( foto_xpm );
scene.addPixmap( pixmap );
ui.graphicsView->show();
Wenn ich die lib statisch linke braucht man auf anderen PC's keine qt etc, oder? Er will bei mir immer die qt4core.dll, jemand ne Ahnung wo man das bei 2003 angeben kann? Sorry, hab leider in vc++ sehr wenig Erfahrung...
Verfasst: 23. März 2007 20:29
von lepsai
SoundsO hat geschrieben:Wenn ich die lib statisch linke braucht man auf anderen PC's keine qt etc, oder? Er will bei mir immer die qt4core.dll, jemand ne Ahnung wo man das bei 2003 angeben kann? Sorry, hab leider in vc++ sehr wenig Erfahrung...
rechte Maustaste auf das Projekt im TreeView, Eigenschaften, dann im Dialog unter Configuration-->C/C++ --> General-->Additional Include directories Include-Pfade setzen und unter Configuration-->Linker-->Input die Qt-Libs angeben.
JPEG's kannste mit Hilfe von QImage, aber auch mit QPixmap::load() laden....
Mach dein QPixmap Object zum Klassenmember, dann wird dein Code wahrscheinlich funktionieren...
Verfasst: 23. März 2007 20:49
von SoundsO
Danke für deine Mühe!!! Das mit der Grafik bekomm ich sicher irgendwie hin. Aber das statische Linken macht mich verrückt. Ich such schon seit ner Stunde nach Hilfe. Unter Linker->Eingabe->Zusätz. Abh. steht " qtmain.lib QtCore4.lib QtGui4.lib" und unter C++->Allgemein->Zusätzliche Includev. ".\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui", alles bei der Installation automatisch erzeugt. Wenn ich aber ne Exe ausführe sagt er, die dll würde fehlen.
Verfasst: 23. März 2007 20:51
von lepsai
aaa, ok... du must dem System mitteilen wo die Qt dlls liegen. Unter Windows musst du die PATH Variable erweitern um C:\Qt\4.x.x\bin
Verfasst: 23. März 2007 22:46
von SoundsO
Hab meine PATH wie beschrieben um den bin-Pfad erweitert und zusätlich noch eine Umgebungsvariable QTDIR zum Root-Pfad zu QT erstellt und jetzt klappt es. Nochmal vielen Dank!!!
Verfasst: 24. März 2007 13:42
von SoundsO
Ahhhh, langsam wirds mir ja echt peinlich. Zwar läuft die exe bei mir (klar, weiß ja wo die dlls sind), auf fremden PC's ohne qt will er aber immer noch die dll. Also scheint er ja immer noch nicht die libs statisch gelinkt zu haben. Tut mit echt leid, aber diese Dinge, besonders vc++, sind relativ neu für mich...
Verfasst: 24. März 2007 16:17
von lepsai
ja, klar. Defaultmässig sind die Qt-Sachen dynamisch kompiliert. Du must also zuerst die Qt Sourcen als statische Lib übersetzen...
Verfasst: 24. März 2007 19:32
von SoundsO
Ja das hab ich gerad von nem Freund auch schon erfahren. Hatte die Evaluation Version drauf und heut morgen die Open-Source mit Patch kompiliert. Also, kompiliers nochmal, Sam

Noch einmal tausend Dank für deine Hilfe!
Verfasst: 25. März 2007 15:09
von SoundsO
Also wenn ich qconfigure mit -static mache bricht er später beim nmake ab. Hab wo anders gelesen das ich nicht der einzige zu sein schein, der das Problem hat. Hat es schonmal einer erfplgreich unter Windows geschafft?