2016-08-07 9 views
0

は、私は次のような状況があります。Qtの動的から読み取られ、ウィジェットを破壊し、作成(にQLineEdit)

を私は自分のアプリケーションのユーザは、自分が作成したい項目のどのように多くのインスタンスを選択することができQSpinBoxを持っています。次のステップでは、各アイテムの名前を指定する必要があります。私はSpinBoxでユーザーが選択した番号に対応するQLabelとQLineEditsの数を動的に作成することで、この問題を解決したかったのです。だから、数字が上がっているときに、私は新しいラインエディットを追加したい、数字が下がったときに、私は廃止されたラインエディットを削除したい。

どうやら、これは私が予想していたよりもはるかに難しいと思われます。私はウェブを検索しましたが、結果は残念です。動的に作成したり、維持したり(おそらくリストに入れる?)、それらのウィジェットを破壊する簡単な方法はないようです。誰かがこれを行う方法正しい方向に私を指すことができますか?

答えて

2

QListWidgetを確認してください。正確にはQListWidgetItemを使用してください。

少し例:この機能は、ビューとして定義されQWidgetQListWidgetに新しい要素を追加し、現在のインデックスを返す:あなたのユーザーがXの項目を選択した場合、あなたが作成するために繰り返す必要があり、今

QModelIndex MainWindow::addNewItem(QWidget* widget) { 
    QListWidgetItem* item = new QListWidgetItem; 
    ui->listWidget->addItem(item1); 
    ui->listWidget->setItemWidget(item, widget); 
    return ui->listWidget->indexFromItem(item); 
} 

をXウィジェットとあなたがQList内のすべてのウィジェットを救うことができる:

listWidget.clear(); 
for (int i=0; i<X; i++) { 
    QTextEdit* edit = new QTextEdit(); 
    const QModelIndex& index = addNetItem(edit); 
    qDebug() << "New element: " << index; 
    listWidget.append(edit); 
    // Handle edit text event 
    connect(edit, SIGNAL(textChanged()), this, SLOT(yourCustomHandler())); 
} 

は、ちょうどすべての編集フィールドのリストを表示します。

関連する問題