Intwert aus Lineedit in Variable speichern

Alles rund um die Programmierung mit Qt
Antworten
RaymanT
Beiträge: 4
Registriert: 16. April 2006 16:18

Intwert aus Lineedit in Variable speichern

Beitrag von RaymanT »

Hallo habe ein kleines Problem. Programmiere das erste mal mit QT eine Gui und müsste aus einem Linedit mittels eines buttondrucks den wert auslesen und in einer Variable speichern.

Code: Alles auswählen

QPushButton* GripperOpenButton = new QPushButton();
  hBox2a->addWidget(GripperOpenButton);
  GripperOpenButton->setText(tr("Gripper Open"));
  QObject::connect(GripperOpenButton, SIGNAL(clicked()), this, SLOT(gripper(lineEdit->text())));
  QObject::connect(GripperOpenButton, SIGNAL(clicked()), this, SLOT(onGripperOpen()));

void PioneerMotionDlg::gripper(QString gripper){
 
	gripperIndex = gripper.toInt();
 	
 std::cout << gripperIndex << std::endl;
 
}
Das funktioniert nicht. wieso wird hier nicht der Wert dem Gripper übergeben? oder kann man das irgendwie anders machen?

Vielen Dank!!!
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

hi,
die übergabe von Parametern in slots ist unzulässig. der parameter wird vom sender gesetzt, also z.B. von lineedit

Code: Alles auswählen

  QObject::connect(lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(gripper(const QString&)))); 
wenn du das nicht willst, dann nimm doch mal

Code: Alles auswählen

  QObject::connect(GripperOpenButton, SIGNAL(clicked()), this, SLOT(OnGripperClicked()));
..
void ...::OnGripperClicked ()
{
   gripperIndex = lineEdit->text().toInt();
   std::cout << gripperIndex << std::endl; 
}
gruss arne
RaymanT
Beiträge: 4
Registriert: 16. April 2006 16:18

Beitrag von RaymanT »

Ja, das 2. habe ich auch schon versucht. aber da bricht er immer beim text() ab. weil er irgendwie nicht drauf zugreifen kann...

Im Debugmodus wirft er immer diese Fehlermeldung:
Unhandled exception at 0x652409ca (QtGuid4.dll) in pioneerGui.exe: 0xC0000005: Access violation reading location 0xcdcdcdd1.

und zwar in der qlineedit.h an dieser stelle:
private:
Q_DECLARE_PRIVATE(QLineEdit)
...
};
RaymanT
Beiträge: 4
Registriert: 16. April 2006 16:18

Beitrag von RaymanT »

Wegen dem wert übergeben. meinst du dass dan so?

Code: Alles auswählen

QObject::connect(lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(gripper(lineEdit->text())));
RaymanT
Beiträge: 4
Registriert: 16. April 2006 16:18

Beitrag von RaymanT »

Oh man, eben saß ich ganz schön auf der Leitung!!!
Habe es hinbekommen.
Vielen Dank!
Antworten