You probably did something bad in sizeHint, I was not able to reproduce the problem
main.cpp
Code:
#include <QtGui>
#include "rotatinglistview.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStandardItemModel model;
for (int i = 0; i < 10; ++i) {
QStandardItem *item = new QStandardItem(QString("item %1").arg(i));
item->setTextAlignment(Qt::AlignRight);
model.appendRow(item);
}
RotatingListView list;
list.setViewMode(QListView::ListMode);
list.setMovement(QListView::Free);
list.setSelectionMode(QAbstractItemView::SingleSelection);
list.setModel(&model);
list.show();
QTimer::singleShot(5000, &list, SLOT(rotate()));
return a.exec();
}
rotatinglistview.h
Code:
#include "rotatinglistview.h"
RotatingListView::RotatingListView(QWidget *parent) : QListView(parent), orientation(Qt::Horizontal)
{
}
void RotatingListView::rotate()
{
if (orientation == Qt::Horizontal) {
setAttribute(Qt::WA_Maemo5PortraitOrientation, true);
orientation = Qt::Vertical;
} else {
setAttribute(Qt::WA_Maemo5PortraitOrientation, false);
orientation = Qt::Horizontal;
}
}
rotatinglistview.cpp:
Code:
#ifndef ROTATINGLISTVIEW_H
#define ROTATINGLISTVIEW_H
#include <QListView>
class RotatingListView : public QListView
{
Q_OBJECT
public:
RotatingListView(QWidget *parent=0);
public slots:
void rotate();
private:
Qt::Orientation orientation;
};
#endif //ROTATINGLISTVIEW_H