Seite 1 von 1
QLineEdit - AnfängerProb
Verfasst: 9. Februar 2006 10:10
von drlolig
Hi!
Beschäftige mich seit gestern ein wenig mit QT. Habe mir die Integration für VS2003 geholt. Ich habe aber nun schon folgendes Problem. Habe eine Form erstellt mit einen QLineEdit. Ich bekomme es aber nich hin mir die Daten zu holen
void Notfall::on_pushButton_2_clicked()
{
newThread dialog(this);
if (dialog.exec())
{
QString name = dialog.lineEdit->text(); //Fehler
}
}
Das ist der Code wie ich ihn aus der Doku entnommen hab. Mein Compiler meint dazu folgendes:
notfall.cpp(24) : error C2039: 'lineEdit': Ist kein Element von 'newThread'
Ich denke mal is nur ne Kleinigkeit, wär über schnelle Hilfe dankbar, dmait i mal weiter komm.
mfg
Verfasst: 9. Februar 2006 11:16
von BartSimpson
Na wie hast du denn das Element in deinem Formular genannt?
Verfasst: 9. Februar 2006 11:24
von drlolig
Hi!
Also ich hab mit den FormEditor ein QLineEdit hinzugefügt und hab dann den Objekt namen auf lineEdit geändert. wenn i in meine newThread.h gugge, sieht diese so aus:
#ifndef NEWTHREAD_H
#define NEWTHREAD_H
#include <QDialog>
#include "ui_newthread.h"
class newThread : public QDialog
{
Q_OBJECT
public:
newThread(QWidget *parent = 0);
~newThread();
private:
Ui::newThreadClass ui;
private slots:
void on_lineEdit_textEdited(QString);
void on_lineEdit_3_textEdited(QString);
};
#endif // NEWTHREAD_H
Vielleicht kann mir eina auch mal ein analoge Beispiel geben ?
mfg
Verfasst: 9. Februar 2006 11:34
von BartSimpson
versuche es mal mit lineEdit_3
Verfasst: 9. Februar 2006 11:37
von drlolig
ne geht auch nicht´, gleicher Effekt
Verfasst: 9. Februar 2006 11:41
von BartSimpson
Dann muste wohl mal etwas mehr Kode zeigen, wie du das Formualr in der Klasse einbindest.
Verfasst: 9. Februar 2006 11:52
von drlolig
Ok!
Also noch mal zur Struktur. Ich klicke in meinen Hauptfenster auf einen BUtton, dann geht ein Dialog auf mit mehreren LineEdits. Ich will jetzt die Eingaben der LinEdits nach drücken des Buttons ok der auch im Dialog ist auswerten/abholen. die *.ui Datei habe ich mit den QT Designer erstellt! Das Programm an sich heisst Notfall und der Dialog newThread. So nun der Code:
Code: Alles auswählen
//main.cpp
#include <QtGui/QApplication>
#include "notfall.h"
#include "CppSQLite3.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//CppSQLite3DB db;
Notfall w;
w.show();
a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
return a.exec();
}
Code: Alles auswählen
//notfall.cpp
#include "notfall.h"
#include "newthread.h"
Notfall::Notfall(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
}
Notfall::~Notfall()
{
}
void Notfall::on_pushButton_2_clicked()
{
newThread dialog(this);
if (dialog.exec())
{
QString name = dialog.lineEdit->text();
}
}
Code: Alles auswählen
//newThread.cpp
#include "newthread.h"
newThread::newThread(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
}
newThread::~newThread()
{
}
void newThread::on_lineEdit_3_textEdited(QString)
{
}
Code: Alles auswählen
//notfall.h
#ifndef NOTFALL_H
#define NOTFALL_H
#include <QtGui/QMainWindow>
#include "ui_notfall.h"
class Notfall : public QMainWindow
{
Q_OBJECT
public:
Notfall(QWidget *parent = 0, Qt::WFlags flags = 0);
~Notfall();
private:
Ui::NotfallClass ui;
private slots:
void on_pushButton_2_clicked();
};
#endif // NOTFALL_H
So denke das is alles die newThread.h steht ja oben.
Danke
Verfasst: 9. Februar 2006 12:04
von BartSimpson
so jetzte weis ich wo der fehler liegt:)
es muss heissen:
ui.lineEdit_3->text()
bzw ui.XXX->text()
XXX=Elementname
Verfasst: 9. Februar 2006 12:25
von drlolig
Hi!
Besten Dank er compilierst, ich kann nur net über den Debugger sehen ob er auch was in den QString schreibt. mal schaun
mfg
Verfasst: 9. Februar 2006 12:58
von drlolig
HI!
Also funktionieren tuts so auch net, er schreibt nix in den String
mfg
Verfasst: 9. Februar 2006 13:24
von BartSimpson
bei exec wird der Dialog ausgeführt. Das ergebnis kannste aber erst hohlen wenn der er Dialog frrtig bzw wenn jemand was eingegeben hat. Das könntest du mit einmen event oder signal machen
Verfasst: 9. Februar 2006 13:30
von drlolig
Hi!
wenn ich statt lineEdit, lineEdit_3 schreibe, welches ja auch ein Widget von meinen Dialog ist, dann haut er mir wieder nen fehler raus:
c:\Dokumente und Einstellungen\admin\Eigene Dateien\Visual Studio Projects\Notfall\notfall.cpp(24): error C2039: 'lineEdit_3': Ist kein Element von 'Ui::NotfallClass'
Da ich mir die Eingabe in einer Listbox anzeigen lassen will hab ich folgendes:
mal durch
und da funktionierst wie gewollt, also hab dann den namen im Listfeld.
mfg
danke für die Hilfe
Verfasst: 9. Februar 2006 14:52
von drlolig
Re:
also mit
hol ich mir die Daten aus meinen Hauptfenster(aus dem lineEdit Widget), aber wie komm ich an die Widgets aus meinen Dialog?
mfg
Verfasst: 9. Februar 2006 15:09
von BartSimpson
Da must du denn dem Dialog eine entsprechende Funktion verpassen.
z.b. eine public Funktion die den String liefert.