16

Qt の 4 つの入力ラベルから 4 つの値のセットを取得したいと思います。使用したいのですが、デフォルトで 1 つQInputDialogしか含まれていません。では、 4 つのラベル4 つの行編集inputboxを追加して、そこから値を得るにはどうすればよいでしょうか?

4

2 に答える 2

26

あなたはそうしない。ドキュメントは非常に明確です:

QInputDialog クラスは、ユーザーから単一の値を取得するための簡単な便利なダイアログを提供し ます。

複数の値が必要な場合はQDialog、4 つの入力フィールドを持つ派生クラスをゼロから作成します。

例えば:

QDialog dialog(this);
// Use a layout allowing to have a label next to each field
QFormLayout form(&dialog);

// Add some text above the fields
form.addRow(new QLabel("The question ?"));

// Add the lineEdits with their respective labels
QList<QLineEdit *> fields;
for(int i = 0; i < 4; ++i) {
    QLineEdit *lineEdit = new QLineEdit(&dialog);
    QString label = QString("Value %1").arg(i + 1);
    form.addRow(label, lineEdit);

    fields << lineEdit;
}

// Add some standard buttons (Cancel/Ok) at the bottom of the dialog
QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
                           Qt::Horizontal, &dialog);
form.addRow(&buttonBox);
QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));

// Show the dialog as modal
if (dialog.exec() == QDialog::Accepted) {
    // If the user didn't dismiss the dialog, do something with the fields
    foreach(QLineEdit * lineEdit, fields) {
        qDebug() << lineEdit->text();
    }
}
于 2013-07-07T13:33:27.730 に答える