在 Qt 中将应用程序方向锁定为横向
Lock app orientation to landscape in Qt
我想将我使用 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 显示器的应用程序。
谢谢
你不能真正效仿那个例子。它根据方向显示两个不同的小部件。此外,文档警告修改 resizeEvent
.
中的大小属性
一种解决方案是通过重载 QWidget::heightForWidth 来设置类似于 320x240
的固定纵横比。你不需要重载 resizeEvent
.
看起来像
int MainWindow::heightForWidth( int w ) {
return (w * 240 )/320;
}
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
.
我想将我使用 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 显示器的应用程序。
谢谢
你不能真正效仿那个例子。它根据方向显示两个不同的小部件。此外,文档警告修改 resizeEvent
.
一种解决方案是通过重载 QWidget::heightForWidth 来设置类似于 320x240
的固定纵横比。你不需要重载 resizeEvent
.
看起来像
int MainWindow::heightForWidth( int w ) {
return (w * 240 )/320;
}
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
.