PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT/KDE Wie am besten dran gehen?



wodda
12-05-2003, 19:42
Hi!
In unserer Schule werden wir zum Borland Builder verdonnert, der wirklich watscheneinfach ist ;-)

Damit komm ich recht gut zurecht, taugt mir aber überhaupt nicht, das halt nur für WIN etwas bringt, ich aber daheim bis auf dem Notebook kein Win verwende. Deshalb habe ich mich jetzt zum Anfangen mit Kdevelop und QT/KDE versucht. Habe bis jetzt 1-2 Tuts durch, durchschaue jedoch das System nicht so ganz. (bin wahrscheinlich vom builder verwöhnt)

Wie habt ihr angefangen? Gibts gute Bücher od. speziell gute Online Doku? Welche tipps könnt ihr geben?

Prinzipiell wollte ich 2 (relativ einfache) Programme umsetzen:

einen "Chatter" , der mehrere Zeilen mit eigenem Protokoll überträgt und server und client spielen kann.

und ein Proggie in dem man ala Paint simple sachen zeichnen kann.

mfg wodda

tuxipuxi
12-05-2003, 19:50
hi,


die Qt-Dokumentation ist natuerlich gut.
Ich habe mir das Buch "Das Qt-Buch" gekauft, was ich allerdings nicht uneingeschraenkt empfehlen kann. Es wird zwar alles gut erklaert, aber irgendwann geht dir die Lust etwas aus, weil sich der Autor, vorsichtig ausgedrueckt, an der Qt Dokumentation etwas abguckt.

Qt und Kde Programmierung, ein anderes Buch, soll ziemlich schlecht sein(hat man mir erzaehlt).


Gruss,

tuxipuxi.

anda_skoa
12-05-2003, 20:58
Ein ziemlich gutes Tutorial, wen gleich schon bischen veraltet, ist hier
http://women.kde.org/projects/coding/tut_kdevelop/

Am besten du siehst es einfach mal durch und versuchst es dann in Teilen oder gesamt, nachzubauen.

Im Grunde gehts mehr um das Zusammenspiel von Qt Designer und KDevelop.
Wenn du das mal hast, einfach mit einem "KDE Mini" Projekt spielen.

Wenn du irgendwo dabei Hilfe brauchst, einfach hier posten.

Ciao,
_

wodda
12-05-2003, 21:43
genau da happerts, beim zusammenspiel designer <-> source ;-)
danke im voraus, und werd gerne darauf zurückkomen

mfg wodda

LinuxDev
12-05-2003, 22:39
Hi wodda...

Tuxipuxi: "Qt und Kde Programmierung, ein anderes Buch, soll ziemlich schlecht sein(hat man mir erzaehlt)."

Ich war derjenige, der Tuxipuxi erzählt hat wie schlecht dieses Buch ist. Kauf dir das bloß nicht.

Es wird dort alles unzureichend erklärt. Aus diesem Grund muss ich immer die Hilfe von tuxi in Anspruch nehmen ;)

Du kannst ja mal das Tutorial von mrunix zum Thema QT durchmachen. Hab mir das mal kurz angeschaut. Ist recht gut beschrieben.

Eine kleine Sammlung von Tutorials zum Thema QT findest du hier: http://linuxdev.de/aa_qt_tutorials.php

Desweiteren kannst du auch versuchen deine Programme ohne den QT Designer zu machen. Bei kleinen Programmen macht das eh keinen Unterschied.

Gruss

wodda
12-05-2003, 22:44
ich hab ein programm ohne den designer angefangen, würd jetzt jedoch gern auf diese hilfe zurückgreifen. Nur genau an diesem Punkt blick ich noch nicht 100% durch. Aber es wird immer heller am ende des Tunnels :)
mit jedem tutorial, dass i mehr durchmach versteh i immer mehr zusammenhänge :-)

danke an alle!

mfg wodda

LinuxDev
12-05-2003, 23:03
hi wodda!

poste doch mal ein stückchen code, dass du nicht raffst. vielleicht kann ich dir mit meinem bescheidenem wissen weiterhelfen.

:)

jwebworks
13-05-2003, 07:57
Ich habe mir
"Programming with Qt" von "Matthias Kalle Dalheimer"
gekauft. Das Buch ist nicht schlecht, erklärt nur Qt aber
sodem auch die Verwendung des Designers (nicht nur die GUI
sondern auch, wie man die Dialoge dann programmieren kann
usw.)

Wenn man KDevelop dann benutzt ist es nicht weiter schwer
den Einsatz desselbigen zu kapieren.

Was ich allerdings nicht so ganz gerafft habe (was auch nicht
im Buch steht) ist das autoconf/automake Zeug. Irgendwie ist
mir qmake wesentlich lieber und ich finde es einfacher.

Ob man allerdings auch KDE-Programme richtig bauen kann
weiss ich (noch) nicht.

cu, stop.h

anda_skoa
13-05-2003, 10:33
Original geschrieben von jwebworks
Ich habe mir
"Programming with Qt" von "Matthias Kalle Dalheimer"
gekauft. Das Buch ist nicht schlecht, erklärt nur Qt aber
sodem auch die Verwendung des Designers (nicht nur die GUI
sondern auch, wie man die Dialoge dann programmieren kann
usw.)


Wir haben das in der Firma. Ist ein gutes Buch, bei dem Autor auch kein Wunder :)



Was ich allerdings nicht so ganz gerafft habe (was auch nicht
im Buch steht) ist das autoconf/automake Zeug. Irgendwie ist
mir qmake wesentlich lieber und ich finde es einfacher.


qmake ist scho einfacher, aber automake ist nicht so schwer, wenn man sich das erste Grundgerüst generieren lässt.
Dann muss man weitere Header und Sourcen nur in zwei Zeilen eintragen, wie bi qmake.

Außerdem macht das KDevelop ja auch automatisch.
Selbst Makefile.am zu editieren kann man später immer noch lernen.



Ob man allerdings auch KDE-Programme richtig bauen kann
weiss ich (noch) nicht.


Doch, glaube schon.
Autoconf/automake hat den Unterschied, dass es benötigte Sachen findet und nötige Compiler Switches, etc. ermittelt.
Abhängig von Plattform, Compiler, etc.

Bei qmake muss man das alles selber wissen und in die .pro Datei eintragen.

Ciao,
_

wodda
13-05-2003, 18:56
hallo!

ich versuche gerade dem vom kdevelop erstellten gerüst meinen eigenen widget für "view" beizubringen.

hab aber mehr oder weniger wenig erfolg.

folgendes habe ich gemacht:
im designer ein ui gebastelt
dieses im kdevelop eingebunden ( die *.h usw. werden erstellt)
die *.h datei habe ich in der qchatterview.h eingebunden.

und drunter die classe definiert:



class QChatterView : public chatterdlg
{
Q_OBJECT
public:
QChatterView(QWidget *parent=0, QChatterDoc* doc=0);
~QChatterView();

protected slots:
void slotDocumentChanged();

};

in der qchatterview.cpp
habe ich den folgendes geändert:




//QChatterView::QChatterView(QWidget *parent, QChatterDoc *doc) : QWidget(parent)
QChatterView::QChatterView(QWidget *parent, QChatterDoc *doc) : chatterdlg(parent)
{
/** connect doc with the view*/
// connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged()));
}
(---> chatterdlg ist der name der form)

was muss ich hier machen:


void QChatterApp::initView()
{
////////////////////////////////////////////////////////////////////
// set the main widget here
view=new QChatterView(this, doc);
setCentralWidget(view);
}

in den tutorial die ich mir angsschaut habe wird nur ein widget direkt aufgerufen, jedoch keines so eingebunden wie in dem fertigen gerüst. Bei einem Widget hatte ich schon kleine Erfolge.

thx!
mfg wodda

anda_skoa
13-05-2003, 19:07
Im initView() muss du nichts ändern.
Du hast ja nur die Basisklasse von QChatterView geändert, nicht die Klasse selbst ausgetauscht.

Ciao,
_

wodda
13-05-2003, 19:16
wie binde ich dann die "chatterdlg" als view ein?
also dass die controls die ich im designer entworfen haben im leeren teil von der Oberfläche eingebunden sind.

mfg wodda

anda_skoa
13-05-2003, 19:21
Original geschrieben von wodda
wie binde ich dann die "chatterdlg" als view ein?
also dass die controls die ich im designer entworfen haben im leeren teil von der Oberfläche eingebunden sind.


Versteh ich nicht, ist es doch schon.

Ist das ein "Qt Mini" Projekt?

Ciao,
_

wodda
13-05-2003, 19:31
nein sorry hab vergessen zu sagen:
qt - sdi

mfg wodda

edit:

mit folgendem starte ich es in einem eigenen fenster, die sollte jedoch in dem ersten integriert sein:



QChatterView *qchatterdlg=new QChatterView();
qchatterdlg->show();

anda_skoa
13-05-2003, 19:49
Ah, ok.

Dann ist QChatterApp wahrscheinlich die QMainWindow Subklasse, richtig?

Wenn dem so ist und dein QChatterView der gesamte Inhalt sein soll, dann kann initView() zB so aussehen



void QChatterApp::initView()
{
view = new QChatterView(this);
QLayout* layout = new QHBoxLayout(this);
layout->add(view);
}


bei den includes muss dann noch


#include <qlayout.h>


hinzugefügt werden.

Ciao,
_

wodda
13-05-2003, 20:00
das ergebnis ist leider das gleiche. irgendwo is da der hund begraben.
QChatterApp ist die von der alles ausgeht. Im Prinzip ist da nur das Problem wie ich meine chatterdlg in die QchatterView einbinde bzw. von dort aus aufrufe?

thx für die hilfe :-)

mfg wodda

btw: für was ist QChatterDoc?

Compiler:


QObject::connect: Cannot connect (null)::documentChanged() to QChatterView::slotDocumentChanged()
QLayout "unnamed" added to QChatterApp "unnamed", which already has a layout
QObject::connect: Cannot connect (null)::documentChanged() to QChatterView::slotDocumentChanged()

anda_skoa
13-05-2003, 20:14
Original geschrieben von wodda
das ergebnis ist leider das gleiche. irgendwo is da der hund begraben.
QChatterApp ist die von der alles ausgeht. Im Prinzip ist da nur das Problem wie ich meine chatterdlg in die QchatterView einbinde bzw. von dort aus aufrufe?


In den View musst du es nicht einbinden, da du den View ja von chatterdlg abgeleitet hast.
Der QChatterView ist also de chatterdlg



btw: für was ist QChatterDoc?


Das "Qt SDI" Projekt ist eine Single Document Applikation im Document/View Modell.
Das Document hält die Daten, der View stellt sie dar.

Versuch mal eine Qt Mini Applikation.
Da geht das leichter.

Ciao,
_

wodda
13-05-2003, 20:39
ok danke :-)!

tuxipuxi
13-05-2003, 21:58
also mein kdevelop(2.1.5) hat kein qt mini.. ab welcher version gibts das?

anda_skoa
13-05-2003, 22:25
Hmm, stimmt.

Gabs mal in einer früheren Version.

Dann halt KDE Mini :)

Ciao,
_

Tec
15-05-2003, 18:28
Also ich habe mit das "qt und kde programmierung" vom "lehner" gekauft und muss sagen das ist nur was für HardCore-Coder! Es gibt kaum ein Listing das mal keinen Fehler aufweist. Deshalb sage ich "Finger weg von dem Buch" !

peschmae
15-05-2003, 18:41
das steht bei mir auch im regal :D

das mit den Listings ist mir gar nicht aufgefallen - ich gehöre halt auch nicht zu den Leuten, die die abschreiben

allerdings bin ich immer wieder verwundert, wieviele Fehler einige Autoren in einem Buch unterbringen können :p
Man könnte fast meinen, die kompilierten ihre Listings gar nie - sonst müssten Sie die Fehler ja finden...

MfG Peschmä

anda_skoa
15-05-2003, 18:49
Es gibt ein neues Tutorial für KDE Programmierung mit Gideon und Designer:

http://developer.kde.org/~larrosa/visualtutorial.html

Ciao,
_

wodda
18-05-2003, 22:15
hi!

danke, langsam wird was draus :-)

nur wie wandel ich folgendes PushButtonConnect->text (also den Inhalt des Buttons so um dass ich daraus einen: const QString & txt, int line = -1 bekomme, den insertLine zb. verwenden kann.


MultiLineDebug->insertLine(<wie?>(PushButtonConnect->text));


thx für eure Hilfe!

mfg wodda

anda_skoa
18-05-2003, 22:18
Da brauchst du nix zu machen.
QButton::text() liefert einen QString und der zweite Parameter hat einen Defaultwert, muss also nicht angegeben werden.

Ciao,
_

wodda
18-05-2003, 22:31
danke für die schnelle antwort!
mhh was habe ich dann vergessen?

chatmini.cpp:50: no matching function for call to QMultiLineEdit::insertLine(<unknown type>)'
/usr/share/qt3/include/qmultilineedit.h:67: candidates are: virtual void
QMultiLineEdit::insertLine(const QString&, int = -1)

edit:
bei

qWarning(PushButtonConnect->text);
kommt


chatmini.cpp:50: cannot resolve overloaded function `text' based on conversion

mfg wodda

anda_skoa
18-05-2003, 22:58
Vielleicht fehlt das include für QPushButton

Ciao,
_

wodda
18-05-2003, 23:03
nein, ist drin


PushButtonConnect->setText(tr2i18n( "TEST" ));

funktioniert. mal ein bisschen danach googlen...

thx, wodda

anda_skoa
18-05-2003, 23:07
Bei deinem Edit fehlen im qDebug die () Klammern beim Methodenaufruf von text()
Ah, sehe gerade, das fehlt beim anderen Posting auch.

Ciao,
_

wodda
18-05-2003, 23:31
uuups :rolleyes:

danke :-)))))

wodda
19-05-2003, 22:23
hi!

bin jetzt endlich so weit, dass ich die sockets einbaun kann.
vorgehen tu ich dabei nach der anleitung der linuxgazette 74. Wie implementiere ich diese jedoch am besten?

ich habe eine minichat.cpp in der ich folgenden aufruf mache

ServerSocket::ServerSocket (4000);
sobald ein server erstellt wird

die class findet sich in einem eigenen header file.
und er greift auch ohne probleme darauf zu.
Aber wie kann ich von dieser klasse aus auf elemente der "Chatmini" klasse oder der "FormMain" klasse zurückgreifen. Sprich einen simplen Text auf ein MultiLine Object schreiben. (zb Fortschritt der verbindung)
Im FormMain verstecken sich alle Buttons und in der Chatmini die Funktionen für die Buttons)

danke für evt. hinweise!


edit:

wenn ich meinen socket ala gazette (http://www.linuxgazette.com/issue74/tougher.html) erstelle, funzt der server socket zwar, aber der rest der anwendung steht auf grund des while True klarerweise. Wie kann ich dies anderst machen?

mfg & thx,
wodda

anda_skoa
19-05-2003, 23:12
Hmm, ich kenn die dort verwendeten Klassen nicht.

Eventuell ist es vorerst einfacher, die Qt Socket Klassen zu verwenden, sprich QServerSocket und QSocket.

Ciao,
_

wodda
19-05-2003, 23:20
*gg* die hab ich nicht gesehen. i war so auf die andern fixiert.

thx