Моя программа может добавлять новые QLabels и QLineEdits в QScrollArea после нажатия кнопки. Идея состоит в том, чтобы создать список продуктов. Моя проблема в том, когда нажата вторая кнопка. Я хочу получить текст всех QLineEdits. Но я не знаю, как использовать эти элементы, потому что каждая новая переменная QLineEdit имеет одно и то же имя, и я не знаю, как это изменить.Как использовать автоматически добавленные Qt-элементы
Ниже приведен небольшой пример:
мой 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
мой 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();
}
Почему бы не сохранить их в векторе, и когда вы хотите получить текст, вы прокрутите этот вектор и вызовите 'text()' на нем? –
Вы также можете использовать что-то вроде 'QList lineEditList = ui-> scrollArea_2-> widget() -> findChildren ()'; –
drescherjm