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