crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QStandardItemModel vs QListView
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 7.4.2010, 14:38
 
Цитата(ЙаМайскЫйПчОЛ @ 7.4.2010, 17:51) *
Возможно ли сие получить штатными средствами?
нет, нужно написать модель-посредник, которая будет возвращать заданную строку в виде столбца. Т.е. переворачивающая строку на 90 грдусов.

На прогорге была тема про транспонирование модели/таблицы...
Нашёл, но чёт на Qt Centre Вика сломалась, нарыл в гугл-кеше:
сама модель
    #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();
    }
ЙаМайскЫйПчОЛ Дата 7.4.2010, 13:51
  Здавствуйте, товарищи.
Всё очень просто, хочу чтобы QListView оставался QListView но при этом отоброжал бы не колонку(из модели), а строку(из модели)
Возможно ли сие получить штатными средствами?
Благодарю, за внимание.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 14:17