crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QStandardItemModel vs QListView, Как заставить QListView отображать не колонку, а строку
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 7.4.2010, 13:51
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 154
Регистрация: 10.7.2008
Из: СПб
Пользователь №: 232

Спасибо сказали: 7 раз(а)




Репутация:   5  


Здавствуйте, товарищи.
Всё очень просто, хочу чтобы QListView оставался QListView но при этом отоброжал бы не колонку(из модели), а строку(из модели)
Возможно ли сие получить штатными средствами?
Благодарю, за внимание.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.4.2010, 14:38
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ЙаМайскЫйПчОЛ @ 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();
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2019, 18:39