#include <QtGui>
Q_OBJECT
public:
enum {FilterRole = Qt::UserRole+1};
Widget() {
l->addWidget(lview); l->addWidget(rview);
model->setColumnCount(1);
for(int i=0;i<100;i++){
item->setData(true, FilterRole);
item->setFlags(Qt::ItemIsEnabled); // disable editing
model->appendRow(item);
}
lproxy->setDynamicSortFilter(true);
lproxy->setFilterRole(FilterRole);
lproxy->setFilterFixedString("true");
lproxy->setSourceModel(model);
lview->setModel(lproxy);
rproxy->setDynamicSortFilter(true);
rproxy->setFilterRole(FilterRole);
rproxy->setFilterFixedString("false");
rproxy->setSourceModel(model);
rview->setModel(rproxy);
}
public slots:
bool isInLeft = index.data(FilterRole).toBool();
const_cast<QAbstractItemModel*>(index.model())->setData(index, !isInLeft, FilterRole);
}
private:
};
#include "main.moc"
int main(int argc, char **argv){
Widget w;
w.show();
return app.exec();
}
#include <QtGui>
class Widget : public QWidget {
Q_OBJECT
public:
enum {FilterRole = Qt::UserRole+1};
Widget() {
QHBoxLayout *l = new QHBoxLayout(this);
lview = new QListView; rview = new QListView;
l->addWidget(lview); l->addWidget(rview);
QStandardItemModel *model = new QStandardItemModel(this);
model->setColumnCount(1);
for(int i=0;i<100;i++){
QStandardItem *item = new QStandardItem(QString::number(i+1));
item->setData(true, FilterRole);
item->setFlags(Qt::ItemIsEnabled); // disable editing
model->appendRow(item);
}
QSortFilterProxyModel *lproxy = new QSortFilterProxyModel(this);
lproxy->setDynamicSortFilter(true);
lproxy->setFilterRole(FilterRole);
lproxy->setFilterFixedString("true");
lproxy->setSourceModel(model);
lview->setModel(lproxy);
QSortFilterProxyModel *rproxy = new QSortFilterProxyModel(this);
rproxy->setDynamicSortFilter(true);
rproxy->setFilterRole(FilterRole);
rproxy->setFilterFixedString("false");
rproxy->setSourceModel(model);
rview->setModel(rproxy);
connect(lview, SIGNAL(doubleClicked(QModelIndex)), SLOT(toggleItem(QModelIndex)));
connect(rview, SIGNAL(doubleClicked(QModelIndex)), SLOT(toggleItem(QModelIndex)));
}
public slots:
void toggleItem(const QModelIndex &index){
bool isInLeft = index.data(FilterRole).toBool();
const_cast<QAbstractItemModel*>(index.model())->setData(index, !isInLeft, FilterRole);
}
private:
QListView *lview, *rview;
};
#include "main.moc"
int main(int argc, char **argv){
QApplication app(argc, argv);
Widget w;
w.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks