Здавствуйте, товарищи.
Всё очень просто, хочу чтобы QListView оставался QListView но при этом отоброжал бы не колонку(из модели), а строку(из модели)
Возможно ли сие получить штатными средствами?
Благодарю, за внимание.
#include <QAbstractProxyModel>
class TransposeProxyModel : public QAbstractProxyModel{
public:
TransposeProxyModel(QObject *p = 0) : QAbstractProxyModel(p){}
QModelIndex mapFromSource ( const QModelIndex & sourceIndex ) const{
return index(sourceIndex.column(), sourceIndex.row());
}
QModelIndex mapToSource ( const QModelIndex & proxyIndex ) const{
return sourceModel()->index(proxyIndex.column(), proxyIndex.row());
}
QModelIndex index(int r, int c, const QModelIndex &ind=QModelIndex()) const{
return createIndex(r,c);
}
QModelIndex parent(const QModelIndex&) const {
return QModelIndex();
}
int rowCount(const QModelIndex &) const{
return sourceModel()->columnCount();
}
int columnCount(const QModelIndex &) const{
return sourceModel()->rowCount();
}
QVariant data(const QModelIndex &ind, int role) const {
return sourceModel()->data(mapToSource(ind), role);
}
};
#include <QApplication>
#include <QStandardItemModel>
#include <QTableView>
#include <QSplitter>
int main(int argc, char **argv){
QApplication app(argc, argv);
QStandardItemModel model(3,3);
model.setData(model.index(0,0), "1");
model.setData(model.index(0,1), "2");
model.setData(model.index(0,2), "3");
model.setData(model.index(1,0), "4");
model.setData(model.index(1,1), "5");
model.setData(model.index(1,2), "6");
model.setData(model.index(2,0), "7");
model.setData(model.index(2,1), "8");
model.setData(model.index(2,2), "9");
TransposeProxyModel trans;
trans.setSourceModel(&model);
QSplitter split;
QTableView *t1 = new QTableView(&split);
t1->setModel(&model);
QTableView *t2 = new QTableView(&split);
t2->setModel(&trans);
split.show();
return app.exec();
}