Seite 1 von 1

Intwert aus Lineedit in Variable speichern

Verfasst: 16. April 2006 16:26
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!!!

Verfasst: 16. April 2006 16:40
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

Verfasst: 16. April 2006 16:59
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)
...
};

Verfasst: 16. April 2006 17:01
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())));

Verfasst: 16. April 2006 17:05
von RaymanT
Oh man, eben saß ich ganz schön auf der Leitung!!!
Habe es hinbekommen.
Vielen Dank!