Mein Programm kann nach dem Klicken auf eine Schaltfläche neue QLabels und QLineEdits zu einer QScrollArea hinzufügen. Die Idee ist, eine Einkaufsliste zu erstellen. Mein Problem ist, wenn eine zweite Schaltfläche angeklickt wird Ich möchte den Text aller QLineEdits erhalten. Aber ich weiß nicht, wie ich diese Elemente verwenden soll, denn jede neue QLineEdit-Variable hat denselben Namen und ich weiß nicht, wie ich das ändern soll.So verwenden Sie automatisch hinzugefügte Qt-Elemente
Unten ist ein kleines Beispiel:
mein MainWindow.h:
#ifndef MainWINDOW_H
#define MainWINDOW_H
#include <QMainWindow>
#include <string>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
int i;
private:
Ui::MainWindow *ui;
private slots:
void on_create_clicked();
read_text();
};
#endif // MainWINDOW_H
mein mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_create_clicked()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(read_text()));
i = 1;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_create_clicked()
{
if(i < 10)
{
i ++;
QLabel *label_2 = new QLabel();
QString s = QString::number(zaehlerHeight) + ". ";
label_2->setText(s);
ui->scrollArea->widget()->layout()->addWidget(label_2);
QLineEdit *lineEdit = new QLineEdit();
ui->scrollArea_2->widget()->layout()->addWidget(lineEdit);
}
else{
ui->label->setText("already 10");
}
}
void MainWindow::read_text()
{
QString mytext = ui->lineEdit->text();
}
Warum speichern Sie sie nicht in einem Vektor, und wenn Sie den Text erhalten möchten, durchlaufen Sie diesen Vektor und rufen 'text()' darauf auf? –
Sie können auch etwas wie 'QList lineEditList = ui-> scrollArea_2-> widget() -> findChildren ()'; –
drescherjm