I would like to lock my app developed with Qt to landscape orientation, even if the screen display is portrait. I have tried adding to my code the resizeEvent method found here: http://qt-project.org/doc/qt-4.8/widgets-orientation.html, but my app still does not display correctly. Here is my code for resizeEvent:
void MainWindow::resizeEvent(QResizeEvent *event)
{
QSize size = event->size();
qDebug() << size;
bool isLandscape = size.width() > size.height();
if (isLandscape == false){
size.transpose();
}
this->setFixedSize(size);
}
Does anyone know how to do this in Qt 4.8.5? I am trying to display an app for a 320x240 display.
Thanks
You can't really follow that example. It shows two different widgets depending on the orientation. Furthermore the doc warns about modifying size properties inside
resizeEvent
.One solution would be to set a fix aspect ratio similar to
320x240
by overloading QWidget::heightForWidth. You wouldn't need to overloadresizeEvent
.It will look like
heightForWidth
is discussed in detail in https://stackoverflow.com/a/1160476/1122645.edit:
sizeHint
is used by the layout of the parent to compute the size of children widgets. In general, it make sense to implement it asbut if
MainWindow
is top level then it will not change anything. You can also alter heightForWidth flag of your current size policyBut again, if it is a top level widget I doesnt change much.
Anyway you don't need to call
updateGeometry
.