Alles rund um die Programmierung mit Qt
RaymanT
Beiträge: 4 Registriert: 16. April 2006 16:18
Beitrag
von RaymanT » 16. April 2006 16:26
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 » 16. April 2006 16:40
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 » 16. April 2006 16:59
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 » 16. April 2006 17:01
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 » 16. April 2006 17:05
Oh man, eben saß ich ganz schön auf der Leitung!!!
Habe es hinbekommen.
Vielen Dank!