1

我有一个QLineEdit两个 QPush 按钮(添加和删除按钮)和一个QListView单击添加按钮时,我在QLineEdit 中输入的文本将添加QListView中。如果我从 QListView 中选择任何一个项目并单击删除按钮,则所选项目将被删除。我完成了这些事情,它工作正常。现在我想添加另一个 QListView,如果双击 QListView 项目(QListView 1),项目应该被转移(QListView 1 中的项目应该完全删除)到新的 QListView(QListView 2),反之亦然。请帮我提出你的建议。提前致谢。

4

2 回答 2

0

例子.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;
};  

例子.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 回答