qt-Programm: QLineEdit mit QPushButton auslesen funktioniert nicht, warum?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo, der Aufbau des User-Interfaces ist sehr "krass" , aber, um es genau  erkären zu können solltest du noch den Inhalt der main() mit dazuschreiben.

Fitje 
Fragesteller
 24.11.2015, 18:12

Für den ganzen Source-code reichte derPlatz im Editor von gutefrage.net nicht.

hier der Rest:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include "counter.h"
int main(int argc, char argv[])
{
int zahl = 33;
QString zawo;
QString wort = "123";
//QString dummy = "";
QString test = "Test";
QApplication app(argc, argv);
QWidget
fenster = new QWidget();
fenster->setWindowTitle("Hallo 6");
fenster->setGeometry(300,200,300,200);
QLineEdit e = new QLineEdit(fenster);
e->setGeometry(10,10,150,20);
e->setText(wort);
QLineEdit
erge = new QLineEdit(fenster);
erge->setGeometry(10,50,150,20);
MeinFenster mf = new MeinFenster();
mf->setGeometry(50,100,200,200);
mf->show();
wort = e->text();
zahl = wort.toInt();
zahl +=2;
zawo.setNum(zahl);
erge->setText(zawo);
QPushButton
clear = new QPushButton("Clear", fenster);
clear->setGeometry(50,120,95,20);
QPushButton finito = new QPushButton("exit", fenster);
finito->setGeometry(150,120,95,20);
fenster->show();
Counter
z = new Counter(fenster);
z->setGeometry(10,80,95,20);
z->show();
// Wollte zuert alles im Hauptfenster machen, aber nichts ausser countUp klappt????
QObject::connect(clear, SIGNAL (clicked()), z, SLOT ( countUp() ) );
QObject::connect(finito, SIGNAL (clicked()), &app, SLOT ( quit() ) );
return app.exec();
}

0
Fitje 
Fragesteller
 24.11.2015, 18:15
@Fitje

Habs mit allen Versionen von Zeiger-Aufrufen probiert. Bis Weihnachten gib ich mir Zeit. Wenns dann nicht funzt, hör ich mit qt auf und bleib bei c und c++. Mit 50 Jahren auf dem Buckel muß ich mir nichts mehr beweisen und hab was anderes zu tun als ständig aufm Rechner rumzudödeln.

0

Hallo,

am besten schick den ganzen source-code an kaiAbuSir at gmx.de damit nichts verloren geht.

Und: Wenn im Debug-Fenster die message kommt ...no such slot...,

dann hat man meist eine schreibfehler gemacht, oder die falschen paramter angegeben (z.b. mySlot(int) stall mySlot(int &) )

Hallo, der source code kann so nicht stimmen: ... = new MeinFenster(); //geht nicht: Denn es gibt ja gar keine Klasse "MeinFenster" sondern MeinFenster() ist ein Methode von Counter. (Außderdem fehlen ein paar Sternchen *, die sind aber wohl vom Editor verschluckt worden, kein Problem)

Fitje 
Fragesteller
 27.11.2015, 17:44

Richtig der Editor hat da selbst im Source-Code-Modus einiges verschluckt. Mit geht es um die Parameterübergabe bei den Funktionen die auf QLineEdit. Selbst wenn ich diese in der Klassendeklaration als public angebe, geht es nicht. Ich möchte innerhalb der Methode testen auf *gf und * zurückgreifen können.

Wenn ich das Prog laufen lasse, kommt nur eine Fehlermeldung:

no such Slot.

Den Code für eine Parameterübergabe wie folgt:

 void Counter :: testen\
( hier Parameter für QlineEdit-zugriff ) { zahli = hf->text(); setText(zahli); }

wüßte ich gerne, wie geht das?

0
Fitje 
Fragesteller
 29.11.2015, 16:31

Hab das ganze jetzt mit dem QT-Designer gemacht. ausserdem mit

gf -> setText(QString("%1").arg(sinus,0,'f',7));

jetzt klappt es. Der moderne QT-Creator rechnet die ui-Dateien dazu. Deswegen hat es mit dem alten code nicht geklappt.

0