Hallo, wiedermal QT ... hab hier folgendes Problem:
die Datei optionwidget.h:
#ifndef OPTIONWINDOW_H #define OPTIONWINDOW_H #include <qwidget.h> #include <qlineedit.h> #include <qstring.h> #include <qlabel.h> #include <qsettings.h> class OptionDialog: public QWidget { Q_OBJECT
public: OptionDialog(QWidget *parent =0, const char *name = 0, WFlags f = 0); void ladeconf();
private: QLineEdit *lmailserv, *lpopserv, *luser, *lpassword, *lpath, *lmaildat, *lamaildat; signals: void geaendert(const QString &);
private slots: void sichereconf(); void schaltesicht(); void voreinst(); };
#endif
und die dazugehoerige option.cpp:
#include "optionwidget.h" #include <qtabdialog.h> #include <qlayout.h> #include <qlineedit.h> #include <qpushbutton.h> #include <qdir.h> #include <qtextstream.h> #include <qsettings.h>
#ifndef Q_WS_WIN #define dir "/home/rico/.adress" #define adrfile "/home/rico/.adress/adr.dat" #define conffile "/home/rico/.adress/conf.dat"
#else #define dir "c:\" #define adrfile "c:\adr.dat" #define conffile "c:\conf.dat" #endif
OptionDialog::OptionDialog(QWidget *parent, const char *name, WFlags f): QWidget (parent, name, f){ setCaption("Grundeinstellungen"); QGridLayout *g = new QGridLayout(this,9,3); QLabel *l = new QLabel("Einstellungen", this); QLabel *l1 = new QLabel("Ausgangsserver",this); QLabel *l2 = new QLabel("(meist pop.irgendwas.de)", this); QLabel *l3 = new QLabel("Eingangsserver", this); QLabel *l4 = new QLabel("(meist mail.irgendwas.de)", this); QLabel *l5 = new QLabel("Benutzer", this); QLabel *l6 = new QLabel("Password", this); QLabel *l7 = new QLabel("Path zur Adressdatei", this); QLabel *l8 = new QLabel("Maildatei-Eingang", this); QLabel *l9 = new QLabel("Maildatei-Ausgang", this); lmailserv = new QLineEdit(this); lpopserv = new QLineEdit(this); luser = new QLineEdit(this); lpassword = new QLineEdit(this); lpassword->setEchoMode(QLineEdit::Password); lpath = new QLineEdit(this); lmaildat = new QLineEdit(this); lamaildat = new QLineEdit(this); QPushButton *ok = new QPushButton("Ok", this); QPushButton *vor = new QPushButton("Voreinstellung", this); QPushButton *ch = new QPushButton("Abbrechen", this); QPushButton *sicht = new QPushButton("Sichtschutz", this); QObject::connect(sicht,SIGNAL(clicked()), this, SLOT(schaltesicht())); QObject::connect(ch,SIGNAL(clicked()),this,SLOT(hide())); QObject::connect(ok,SIGNAL(clicked()),this,SLOT(sichereconf())); QObject::connect(vor,SIGNAL(clicked()),this, SLOT(voreinst())); g->addWidget(l,0,1);
g->addWidget(l1,1,0); g->addWidget(l2,1,1); g->addWidget(lmailserv,1,2);
g->addWidget(l3,2,0); g->addWidget(l4,2,1); g->addWidget(lpopserv,2,2);
g->addWidget(l5,3,0); g->addWidget(luser,3,2);
g->addWidget(l6,4,0); g->addWidget(sicht,4,1); g->addWidget(lpassword,4,2);
g->addWidget(l7,5,0); g->addWidget(lpath,5,2);
g->addWidget(l8,6,0); g->addWidget(lmaildat,6,2);
//g->addWidget(l9,7,0); //g->addWidget(lamaildat,7,2);
g->addWidget(ok,8,0); g->addWidget(vor,8,1); g->addWidget(ch,8,2);
g->activate(); ladeconf(); }
void OptionDialog::ladeconf() {QSettings settings; lmailserv->setText(settings.readEntry("/Adress/Server/Mailserv")); lpopserv->setText(settings.readEntry("/Adress/Server/Popserv")); luser->setText(settings.readEntry("/Adress/Userspec/User")); lpassword->setText(settings.readEntry("/Adress/Userspec/Password")); lpath->setText(settings.readEntry("/Adress/Path/lpath")); lmaildat->setText(settings.readEntry("/Adress/Path/mpath")); lamaildat->setText(settings.readEntry("/Adress/Path/mapath")); } void OptionDialog::sichereconf() {QSettings settings; settings.writeEntry("/Adress/Server/Mailserv", lmailserv->text()); settings.writeEntry("/Adress/Server/Popserv", lpopserv->text()); settings.writeEntry("/Adress/Userspec/User", luser->text()); settings.writeEntry("/Adress/Userspec/Password", lpassword->text()); settings.writeEntry("/Adress/Path/lpath", lpath->text()); settings.writeEntry("/Adress/Path/mpath", lmaildat->text()); settings.writeEntry("/Adress/Path/mapath", lamaildat->text()); emit geaendert(lpath->text()); this->hide(); }
void OptionDialog::schaltesicht() { (lpassword->echoMode() == 2) ? lpassword->setEchoMode(QLineEdit::Normal):lpassword->setEchoMode(QLine Edit::Password); }
void OptionDialog::voreinst() { lpath->setText(adrfile); }
kann mir bitte wer verraten, warum ich denn nen "Segmentation fault " bekomm?
ps: bis zu ner bestimmten anzahl von Labels und LineEdits gings gut Ohne "Sf"...
On Sun, Jan 06, 2002 at 07:02:54PM +0100, Rico Schuster wrote:
Hallo, wiedermal QT ... hab hier folgendes Problem:
<schnipp>
#include "optionwidget.h"
da du Q_OBJECT verwendest sollte hier irgendwo ein #include "optionwidget.moc" stehen sonst geht das Linken schief
QLabel *l = new QLabel("Einstellungen", this); QLabel *l1 = new QLabel("Ausgangsserver",this); QLabel *l2 = new QLabel("(meist pop.irgendwas.de)", this);
... Hast du schon mal einen Blick auf Qt-Designer und die cleveren .ui-Dateien geworfen? Das erspart 'ne Menge tipperei
QObject::connect(sicht,SIGNAL(clicked()), this, SLOT(schaltesicht())); QObject::connect(ch,SIGNAL(clicked()),this,SLOT(hide())); QObject::connect(ok,SIGNAL(clicked()),this,SLOT(sichereconf())); QObject::connect(vor,SIGNAL(clicked()),this, SLOT(voreinst()));
Das sollte jeweils connect(...); heissen (also ohne QObject::)
void OptionDialog::schaltesicht() { (lpassword->echoMode() == 2) ?
^^^ gehört das ')' nicht etwas weiter hinten hin?
lpassword->setEchoMode(QLineEdit::Normal):lpassword->setEchoMode(QLine Edit::Password); }
kann mir bitte wer verraten, warum ich denn nen "Segmentation fault " bekomm?
Gute Frage...
ps: bis zu ner bestimmten anzahl von Labels und LineEdits gings gut
Falls doch automagisch eine *.moc Datei erstellt wurden ist, lösche die einfach mal und erzeuge sie neu, manchmal hilft das schon.
Ansonsten bitte mal den Inhalt der 'main'-Funktion schicken.
Ciao, Tobias
On Fri, 4 Jan 2002 20:36:16 +0100, Tobias Koenig wrote:
On Sun, Jan 06, 2002 at 07:02:54PM +0100, Rico Schuster wrote:
Hallo,
Nabend Tobias
wiedermal QT ... hab hier folgendes Problem:
<schnipp>
#include "optionwidget.h"
da du Q_OBJECT verwendest sollte hier irgendwo ein #include "optionwidget.moc" stehen sonst geht das Linken schief
also das linken funktioniert ganz wunderbar mittels progen und tmake...
QLabel *l = new QLabel("Einstellungen", this); QLabel *l1 = new QLabel("Ausgangsserver",this); QLabel *l2 = new QLabel("(meist pop.irgendwas.de)", this);
.... Hast du schon mal einen Blick auf Qt-Designer und die cleveren .ui- Dateien geworfen? Das erspart 'ne Menge tipperei
wollt eigentlich nichts mit so grafischen Dingern tun, auch wenn es tippselei ersparrt ;-)
QObject::connect(sicht,SIGNAL(clicked()), this,
SLOT(schaltesicht())); QObject::connect(ch,SIGNAL(clicked()),this,SLOT(hide())); QObject::connect(ok,SIGNAL(clicked()),this,SLOT(sichereconf()))
;
QObject::connect(vor,SIGNAL(clicked()),this,
SLOT(voreinst()));
Das sollte jeweils connect(...); heissen (also ohne QObject::)
ohne bekomm ich ne fehlermeldung
void OptionDialog::schaltesicht() { (lpassword->echoMode() == 2) ?
^^^ gehört das ')' nicht etwas weiter
hinten hin?
lpassword->setEchoMode(QLineEdit::Normal):lpassword-
setEchoMode(QLine
Edit::Password); }
sollte heissen : (lpassword->echoMode() == 2) ?lpassword->setEchoMode( QLineEdit::Normal):lpassword->setEchoMode(QLineEdit::Password); also MITOHNE Zeilenumbruch ;-)
kann mir bitte wer verraten, warum ich denn nen "Segmentation fault " bekomm?
Gute Frage...
ps: bis zu ner bestimmten anzahl von Labels und LineEdits gings gut
Falls doch automagisch eine *.moc Datei erstellt wurden ist, lösche die einfach mal und erzeuge sie neu, manchmal hilft das schon.
also wie gesagt... ich moc'e nicht selbst... macht alles tmake im bundle mit progen, hatte da bisher keinerlei Probleme
Ansonsten bitte mal den Inhalt der 'main'-Funktion schicken.
Ciao, Tobias
Danke erstmal
On Mon, Jan 07, 2002 at 12:13:07AM +0100, Rico Schuster wrote:
Hallo,
Nabend Tobias
He Rico,
QLabel *l = new QLabel("Einstellungen", this); QLabel *l1 = new QLabel("Ausgangsserver",this); QLabel *l2 = new QLabel("(meist pop.irgendwas.de)", this);
.... Hast du schon mal einen Blick auf Qt-Designer und die cleveren .ui- Dateien geworfen? Das erspart 'ne Menge tipperei
wollt eigentlich nichts mit so grafischen Dingern tun, auch wenn es tippselei ersparrt ;-)
In einer ui-Datei steht wirklich nur das UserIFace in XML-Format drinn, keine Logik und keine Zeile Code... es ist also nicht wie bei Delphi & Co. Der Codeübersichtlichkeit wegen verwenden auch profimässige Software (große Teile des KDE-Projekts und 'The Kompany') diese Dateien.
QObject::connect(sicht,SIGNAL(clicked()), this,
SLOT(schaltesicht())); QObject::connect(ch,SIGNAL(clicked()),this,SLOT(hide())); QObject::connect(ok,SIGNAL(clicked()),this,SLOT(sichereconf()))
;
QObject::connect(vor,SIGNAL(clicked()),this,
SLOT(voreinst()));
Das sollte jeweils connect(...); heissen (also ohne QObject::)
ohne bekomm ich ne fehlermeldung
?!? Das sollte eigentlich nicht passieren. Wie sieht die aus?
Ciao, Tobias
On Mon, 7 Jan 2002 22:30:32 +0100, Tobias Koenig wrote:
On Mon, Jan 07, 2002 at 12:13:07AM +0100, Rico Schuster wrote:
Hallo,
Nabend Tobias
He Rico,
Nochmals nabend Tobias
QLabel *l = new QLabel("Einstellungen", this); QLabel *l1 = new QLabel("Ausgangsserver",this); QLabel *l2 = new QLabel("(meist pop.irgendwas.de)", this);
.... Hast du schon mal einen Blick auf Qt-Designer und die cleveren
.ui-
Dateien geworfen? Das erspart 'ne Menge tipperei
wollt eigentlich nichts mit so grafischen Dingern tun, auch wenn es tippselei ersparrt ;-)
In einer ui-Datei steht wirklich nur das UserIFace in XML-Format drinn, keine Logik und keine Zeile Code... es ist also nicht wie bei Delphi & Co. Der Codeübersichtlichkeit wegen verwenden auch profimässige Software (große Teile des KDE-Projekts und 'The Kompany') diese Dateien.
ich arbeite denn doch lieber mit dem vi und meinem Wissen... ;-) werd's mir aber sicher mal anschauen.
QObject::connect(sicht,SIGNAL(clicked()), this, SLOT(schaltesicht())); QObject::connect(ch,SIGNAL(clicked()),this,SLOT(hide()));
QObject::connect(ok,SIGNAL(clicked()),this,SLOT(sichereconf())) ;
QObject::connect(vor,SIGNAL(clicked()),this,
SLOT(voreinst()));
Das sollte jeweils connect(...); heissen (also ohne QObject::)
ohne bekomm ich ne fehlermeldung
?!? Das sollte eigentlich nicht passieren. Wie sieht die aus?
Ich denk ich hab das Problem gefunden, hab nen Speicherbaustein aus meinem Rechner verbannt, der mir scho bei der Kernel-Kompilierung Sorgen machte... danach hats funktioniert.
Ciao, Tobias
bye
On Fri, 4 Jan 2002 20:36:16 +0100, Tobias Koenig wrote: nochmal hi Tobias
Ansonsten bitte mal den Inhalt der 'main'-Funktion schicken.
das gesamte programm umfasst gut 28 kb quelltext. bin mir aber sicher, dass der uebrige teil i.o.ist
Ciao, Tobias
bye
lug-dd@mailman.schlittermann.de