QLineEdit 、 2つのQPushボタン([追加と削除]ボタン)、およびQListViewがあります。QLineEditに入力しているテキストは、追加ボタンをクリックするとQListViewに追加されます。また、QListViewからアイテムのいずれかを選択して[削除]ボタンをクリックすると、選択したアイテムが削除されます。私はこれらのことを終えました、そしてそれはうまくいきます。ここで、別のQListViewを追加したいのですが、QListViewアイテム(QListView 1)をダブルクリックすると、アイテムが新しいQListView(QListView 2)に転送されます(QListView 1のアイテムは完全に削除されます) 。plzはあなたの提案を手伝ってくれます。前もって感謝します。
質問する
1556 次
2 に答える
0
Example.h
class Example : public QWidget
{
Q_OBJECT
public:
explicit Example(QWidget *parent = 0);
~Example();
private slots:
void on_listView_doubleClicked(const QModelIndex &index);
void on_listView_2_doubleClicked(const QModelIndex &index);
private:
QStandardItemModel *model; // This model is used when the add button is clicked.
QStandardItemModel *listViewModel;
};
Example.cpp
void Example::on_listView_doubleClicked(const QModelIndex &index)
{
QStandardItem *Item1;
Items1 = new QStandardItem();
Items1->setData(ui->listView->currentIndex().data(), Qt::DisplayRole );
Items1->setEditable( false );
listViewModel->appendRow( Items1 );
listViewModel->sort( 0, Qt::AscendingOrder );
ui->listView_2->setModel( listViewModel );
model->removeRow( ui->listView->currentIndex().row() );
}
void Example::on_listView_2_doubleClicked(const QModelIndex &index)
{
QStandardItem *Items2;
Items2 = new QStandardItem();
Items2->setData( ui->listView_2->currentIndex().data(), Qt::DisplayRole );
Items2->setEditable( false);
model->appendRow( Items2 );
model->sort( 0,Qt::AscendingOrder );
ui->listView->setModel( model );
model->removeRow( ui->listView_2->currentIndex().row() );
}
于 2012-09-24T11:50:35.843 に答える
0
より拡張可能な方法は、カスタムモデルを作成し(必要に応じてQStringListModel
ifを継承する可能性があります)moveRows
、ドラッグアンドドロップ機能を実装および/または実行することです。
于 2017-08-13T07:12:47.997 に答える