Seite 1 von 1
[ERLEDIGT] Ich finde den fehler nicht.
Verfasst: 1. Oktober 2010 23:38
von MacGyver
Hallo
bei mir stürzt folgeder Code ab.
Ich versuche per SpinBox die Anzahl meiner vorhanden LineEdits
ebzurufen und den Text auszulesen.
Funktioniert aber nicht und ich weis nicht warum ?
Code: Alles auswählen
int i = spinbox->value();
for (int a = 0; a < i; ++a) {
text[a] = new QString;
*text[a] = lineEdits[a]->text();
}
Vieleicht habt ihr ne Idee.
Gruß MacGyver
Verfasst: 2. Oktober 2010 03:00
von kater
Zu wenig Code. LineEdits? text?
Verfasst: 2. Oktober 2010 06:18
von MacGyver
Hallo
also ich erstelle per
Code: Alles auswählen
for (int a = 0; a < i; ++a) {
formGroupBoxb->addWidget(labels[a] = new QLabel(tr("Fehlerklasse %1:").arg(a + 1)),a,0);
formGroupBoxb->addWidget(lineEdits[a] = new QLineEdit,a,1);
}
verschiedene QLineEdit's, i ist hier der rückgabewert von "QSpinBox->value();".
Dann versuche ich den Text von lineEdits[a] abzurufen.
Code: Alles auswählen
for (int a = 0; a < i; ++a) {
inputs[a] = new QString;
*inputs[a] = lineEdits[a]->text();
Wobei i auch wieder der Spinbox wert ist.
Gruß MacGyver
Verfasst: 2. Oktober 2010 08:36
von franzf
Wie sind "label" und "lineEdit" deklariert? Und wie gehst du sicher, dass der Wert in der Spinbox nicht größer ist als die Arrays?
Ich versuche per SpinBox die Anzahl meiner vorhanden LineEdits
lässt mich schaudern.
Verfasst: 2. Oktober 2010 08:45
von padreigh
Abgesehen davon das du
1. kein Kompilierbares Minimalbeispiel lieferst ( und damit implizit )
2. kritische Informationen zurückhältst (immer JEDE!! variable mit Typ liefern, woran sollen wir den Erraten - den Methoden?)
3. sehr seltsame Sachen machst ... wofür Speicherst du das Zeug alles
wird dein Problem wohl woanders liegen ... das hier ist genauso Sinnfrei aber tut:
Code: Alles auswählen
#include <QtGui/QApplication>
#include <QtGui>
#include <QtCore>
#include <QDebug>
#include <algorithm>
int main(int argc, char *argv[])
{
srand(20);
QApplication a(argc, argv);
// Widget w;w.show();
QGroupBox * gb = new QGroupBox;
QFormLayout * lay = new QFormLayout(gb);
QVector<QLabel*> labs;
QVector<QLineEdit*> lins;
QVector<QString*> txts;
int i = 10;
for (int a = 0; a < i; ++a)
{
labs.push_back(new QLabel(QString("Fehlerklasse %1:").arg(a + 1)));
lins.push_back(new QLineEdit);
lay->addRow(labs.back(),lins.back());
}
QString text("12345abcdef");
// simulate apesNtypewriters
for (int a = 0; a < i; ++a)
{
std::random_shuffle(text.begin(),text.end());
lins.at(a)->setText(text);
}
for (int a = 0; a < i; ++a) {
txts.push_back(new QString());
*(txts.back()) = lins.at(a)->text();
}
for (int a = 0; a < i; ++a) {
qDebug() << *txts.at(a);
}
gb->show();
return a.exec();
}
Verfasst: 2. Oktober 2010 08:47
von upsala
Code: Alles auswählen
int i = spinbox->value();
for (int a = 0; a < i; ++a) {
text[a] = new QString;
*text[a] = lineEdits[a]->text();
}
Warum so umständlich? Warum das 'new QString'? Wie ist text[] deklariert? Warum wird da keine QStringList verwendet?
Code: Alles auswählen
formGroupBoxb->addWidget(lineEdits[a] = new QLineEdit,a,1);
Da spricht zwar ansich nichts dagegen, aber du solltest doch besser
Code: Alles auswählen
linesEdits[a]=new QLineEdit;
formGroupBoxb->addWidget(lineEdits[a],a,1);
schreiben.
Außerdem scheinst du gerne C-Arrays zu verwenden, beschäftige die mal mit den Container-Klassen von Qt.
Verfasst: 2. Oktober 2010 09:46
von padreigh
Und vielleicht schaust du dir auch noch
http://doc.qt.nokia.com/4.6/qobject.html#findChildren an .. damit geht sowas:
Code: Alles auswählen
#include <QtGui/QApplication>
#include <QtGui>
#include <QtCore>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget wid;
QVBoxLayout * lay = new QVBoxLayout(&wid);
for (int i=0;i<5;++i)
{
lay->addWidget(new QLineEdit(&wid));
wid.children().back()->setObjectName(QString("input_%1").arg(i));
}
for (int i=0;i<5;++i)
{
lay->addWidget(new QLineEdit(&wid));
wid.children().back()->setObjectName(QString("out_%1").arg(i));
}
QList<QLineEdit*> in= wid.findChildren<QLineEdit*>(QRegExp("input"));
QList<QLineEdit*> out= wid.findChildren<QLineEdit*>(QRegExp("out"));
qDebug() << "INPUTs";
foreach (QLineEdit * edit, in)
qDebug() << edit->objectName();
qDebug() << "OUTPUTs";
foreach (QLineEdit * edit, out)
qDebug() << edit->objectName();
wid.show();
return a.exec();
}
Verfasst: 4. Oktober 2010 07:49
von MacGyver
Besten Dank für die Tips.
Habe den Fehler gefunden, hat sich somit erledigt!