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&acute;, 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:

Code: Alles auswählen

QString name  = ui.lineEdit->text();
mal durch

Code: Alles auswählen

QString name = "testname";
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

Code: Alles auswählen

ui.lineEdit->text();
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.