Seite 1 von 1

QT4 mit dev-cpp

Verfasst: 11. Juli 2005 00:28
von c++coder
hi,
nutzt jemand von euch QT4 mit dev-cpp?
warum brauch man eigentlich den moc compiler? ...für signales und slots...was ist das?

ich hab nun ein template erstellt für ein QT4 projekt, brauch dann nur auf Datei-Neues Projekt-GUI-QT4 dann wird ein default QT4 geladen...
nun wie kann ich aber mein selbstgemachtes makefile da dazu tun? makefile ist dafür das ich nicht per hand mocen muss!!

makefile:

Code: Alles auswählen

# Project: Projekt1 
# Makefile created by Dev-C++ 4.9.9.2 
  
CPP  = g++.exe 
CC   = gcc.exe 
MOC  = moc.exe 
WINDRES = windres.exe 
RES  = 
OBJ = moc_mainwindow.o mainwindow.o main.o $(RES) 
LINKOBJ  = main.o mainwindow.o $(RES) 
LIBS =  -L"lib" -L"C:/Qt4.0.0/lib" -L"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/lib" -mwindows Qt4.0.0/lib/libQt3Support4.a Qt4.0.0/lib/libQtAssistantClient.a Qt4.0.0/lib/libQtCore4.a Qt4.0.0/lib/libQtDesigner4.a Qt4.0.0/lib/libQtDesignerComponents4.a Qt4.0.0/lib/libQtGui4.a Qt4.0.0/lib/libqtmain.a Qt4.0.0/lib/libQtNetwork4.a Qt4.0.0/lib/libQtOpenGL4.a Qt4.0.0/lib/libQtSql4.a Qt4.0.0/lib/libQtXml4.a   
INCS =  -I"include" 
CXXINCS =  -I"lib/gcc/mingw32/3.4.2/include"  -I"include/c++/3.4.2/backward"  -I"include/c++/3.4.2/mingw32"  -I"include/c++/3.4.2"  -I"include"  -I"C:/Qt4.0.0/include"  -I"C:/Qt4.0.0/include/ActiveQt"  -I"C:/Qt4.0.0/include/Qt"  -I"C:/Qt4.0.0/include/Qt3Support"  -I"C:/Qt4.0.0/include/QtAssistant"  -I"C:/Qt4.0.0/include/QtCore"  -I"C:/Qt4.0.0/include/QtDesigner"  -I"C:/Qt4.0.0/include/QtGui"  -I"C:/Qt4.0.0/include/QtMotif"  -I"C:/Qt4.0.0/include/QtNetwork"  -I"C:/Qt4.0.0/include/QtNsPlugin"  -I"C:/Qt4.0.0/include/QtOpenGL"  -I"C:/Qt4.0.0/include/QtOpenGL"  -I"C:/Qt4.0.0/include/QtSql"  -I"C:/Qt4.0.0/include/QtXml"  -I"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/include"  -I"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/lib/wx/include/msw-ansi-release-static-2.6" 
BIN  = Projekt1.exe 
CXXFLAGS = $(CXXINCS)   
CFLAGS = $(INCS)   
RM = rm -f 
  
.PHONY: all all-before all-after clean clean-custom 
  
all: all-before Projekt1.exe all-after 
  
  
clean: clean-custom 
    ${RM} $(OBJ) $(BIN) 
  
$(BIN): $(OBJ) 
    $(CPP) $(LINKOBJ) -o "Projekt1.exe" $(LIBS) 
  
main.o: main.cpp 
    $(CPP) -c main.cpp -o main.o $(CXXFLAGS) 
  
mainwindow.o: mainwindow.cpp 
    $(CPP) -c mainwindow.cpp -o mainwindow.o $(CXXFLAGS) 
  
moc_mainwindow.o: moc_mainwindow.cpp mainwindow.h 
    $(CPP) -c moc_mainwindow.cpp -o moc_mainwindow.o $(CXXFLAGS) 
  
moc_mainwindow.cpp: mainwindow.cpp 
    $(MOC) mainwindow.h -o moc_mainwindow.cpp $(CXXFLAGS)
cu+thx

Verfasst: 15. Juli 2005 11:55
von Hermes
Also da du Deine eigenen Makefiles schreibst scheinst du etwas advanced zu sein.

Signals und Slots sind eine wirklich gelungene Art und Weise, wie Objekte in Qt miteinander 'reden' und/oder aufeinander reagieren können.

Du solltest Dir diese Methode unbedingt anlernen, wenn du Qt auch nur ansatzweise ausnutzen willst.

Dieser Moc Compiler ist dafür da, das die einzelnen Objekte die Signale austauschen beim kompiliervorgang irgendwie (ich weiss nicht wie das genau funktioniert) den Zugriff aufeinander kriegen.

moc

Verfasst: 19. Juli 2005 23:57
von c++coder
hi,
danke mal für die erklärung!

ruft ihr moc alle händisch auf oder schreib auch jemand eigene makefiles?
wohin soll man dann die moc datei includen, wie soll die moc include heissen: moc_dialog.cpp oder dialog.moc ???!

Code: Alles auswählen

#include <QtGui>

#include "dialog.h"
#include "wigglywidget.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    WigglyWidget *wigglyWidget = new WigglyWidget;
    QLineEdit *lineEdit = new QLineEdit;

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(wigglyWidget);
    layout->addWidget(lineEdit);
    setLayout(layout);

    connect(lineEdit, SIGNAL(textChanged(QString)),
            wigglyWidget, SLOT(setText(QString)));

    lineEdit->setText(tr("Hello world!"));

    setWindowTitle(tr("Wiggly"));
    resize(360, 145);
}

#include "moc_dialog.cpp"
was macht hier dieses connect, das hängt ja mit dem signal und slots konzept zusammen....also wenn ich hier in eine edit box was rein schreibe ändert sich oben der test...?

also dann, danke
bye

Verfasst: 24. Juli 2005 18:57
von jaegermeister
Zum Signal/Slot http://doc.trolltech.com/4.0/signalsandslots.html
Makefiles erstellt qmake http://doc.trolltech.com/4.0/qmake-manual.html
und die moc datei werden mitgelinkt include brauchst du die nicht außer du arbeitest ohne Header Files

mfg jaegermeister

Verfasst: 11. September 2005 19:02
von kowi1134
Sofern es noch aktuell ist:

Lade Dir die Dev-C++ ohne Compiler runter. Installiere QT4 mit MinGW und sage in den Projekt-Optionen von Dev-C++, dass Du eine bestimmte Makefile (Makefile.release) verwenden willst. Dazu musst Du nur einmal vorher selbst qmake aufgerufen haben, das ist alles.

Ciao