ボタンをクリックすると、プログラムは新しいQLabelsとQLineEditsをQScrollAreaに追加できます。アイデアは食料品リストを作成することです。私の問題は、2番目のボタンがクリックされたときです。すべての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