3

QTextEdit 、2つの QPushButtons (ボタンの追加と削除)、およびQListViewがあります。テキスト編集でテキストを入力して追加ボタンをクリックすると、テキストがリスト ビューに追加されます。次に、リスト ビューから追加されたテキストのいずれかを選択して [削除] ボタンをクリックすると、テキストが ListView から削除されます。これを達成する方法がわかりません。Plzこれを解決するのを手伝ってください。前もって感謝します。

4

2 に答える 2

2

QStandardItemModelを使用していて、次の変数があると仮定します

QPushButton* addButton;
QPushButton* removeButton;
QTextEdit* textEdit;
QStandardItemModel* model;
MyObject* this;

次のコードでそれを行う必要があります。

connect(addButton, SIGNAL(clicked()), this, SLOT(onAddButtonClicked()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(onRemoveButtonClicked()));

次に、定義したクラス MyObject の 2 つのスロットが次のことを行います。

void MyObject::onAddButtonClicked() {
    model->appendRow(new QStandardItem(textEdit->plainText());
}

void MyObject::onRemoveButtonClicked() {
    if (model->rowCount() == 0)
        return;
    delete model->takeItem(model->rowCount() - 1);
}

ビューの更新はによって処理されますQStandardItemModel

于 2012-09-12T08:31:44.373 に答える
1

モデル/ビュー/コントローラーパターンの使用方法がわからない場合は、QListViewの代わりにQListWidgetを使用することをお勧めします。QListWidgetに追加することは、より単純にする方法です。追加ボタンのクリックからの信号を送信するスロットと、削除ボタンのクリックからのスロットを作成する必要があります。

最初のスロットのコード:

m_pListWidget->addItem( m_pTextEdit->toPlainText() );

2番目のスロットのコード:

if ( QListWidgetItem* plwiCurrent = m_pListWidget->currentItem() )
{
    m_pListWidget->takeItem( m_pListWidget->row( plwiCurrent ) );
    delete plwiCurrent;
}
于 2012-09-12T08:23:38.840 に答える