我想将使用Qt开发的应用程序锁定到横向,即使屏幕显示是纵向的。我尝试在我的代码中添加resizeEvent方法:http://qt-project.org/doc/qt-4.8/widgets-orientation.html,但我的应用仍然无法正确显示。这是我的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);
}
有人知道如何在Qt 4.8.5中执行此操作吗?我正在尝试显示320x240显示器的应用程序。
由于
答案 0 :(得分:0)
你无法真正遵循这个例子。它根据方向显示两个不同的小部件。此外,doc还警告要修改resizeEvent
内的大小属性。
一种解决方案是通过重载QWidget::heightForWidth来设置类似于320x240
的修正宽高比。您不需要重载resizeEvent
。
看起来像
int MainWindow::heightForWidth( int w ) {
return (w * 240 )/320;
}
https://stackoverflow.com/a/1160476/1122645中详细讨论了 heightForWidth
。
修改强>
父 的 布局使用 sizeHint
来计算子窗口小部件的大小。一般来说,将其实现为
QSize MainWindow::sizeHint() const
{
int w = //some width you seem fit
return QSize( w, heightForWidth(w) );
}
但如果MainWindow
是顶级,那么它不会改变任何东西。您还可以alter heightForWidth flag of your current size policy
QSizePolicy currPolicy = this->sizePolicy();
currPolicy->setHeightForWidth(true);
this->SetSizePolicy(currPolicy);
但同样,如果它是一个顶级小部件,我的变化不大。
无论如何,您不需要致电updateGeometry
。