Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt-如何将QListView项传输到另一个QListView?_Qt_Qt4.7_Qlistview_Model View_Qlineedit - Fatal编程技术网

Qt-如何将QListView项传输到另一个QListView?

Qt-如何将QListView项传输到另一个QListView?,qt,qt4.7,qlistview,model-view,qlineedit,Qt,Qt4.7,Qlistview,Model View,Qlineedit,我有一个QLineEdit,2个QPush按钮(添加和删除按钮)和一个QListView。单击添加按钮时,我在QLineEdit中输入的文本将添加到QListView中。如果我正在从QListView中选择任何一个项目,并单击删除按钮,则所选项目将被删除。我完成了这些事情,效果很好现在我想添加另一个QListView,如果我双击QListView项目(QListView 1),这些项目应该被转移到新的QListView(QListView 2)上,反之亦然。请帮助我提出建议。提前感谢。示例。h

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

示例。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() );

}

一种更具扩展性的方法是创建一个自定义模型(如果适合您的需要,可能会继承
QStringListModel
),然后实现
moveRows
和/或拖放功能。

为什么还要使用
QListView
来插入项目呢?只需使用
QListWidget