在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
将在 https://stackoverflow.com/a/1160476/1122645 详细讨论。
编辑:
父小组件的布局使用 sizeHint
来计算子微件的大小。一般来说,将其实现为
QSize MainWindow::sizeHint() const
{
int w = //some width you seem fit
return QSize( w, heightForWidth(w) );
}
但如果MainWindow
是顶级的,那么它不会改变任何东西。您还可以更改当前大小策略的 heightForWidth 标志
QSizePolicy currPolicy = this->sizePolicy();
currPolicy->setHeightForWidth(true);
this->SetSizePolicy(currPolicy);
但同样,如果它是一个顶级小部件,我不会有太大变化。
反正你不需要打电话给updateGeometry
.
相关文章:
- 如何找到锁定Linux futex的C++行
- G锁定铸造到基础上会释放模拟行为
- 如何检查线程是否锁定
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 我应该在锁定TBitmap画布后解锁它吗
- C++ 11 中的锁定是否保证访问数据的新鲜度?
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 如何在实时应用程序中锁定线程
- 在 lambda 中锁定 std::shared_ptr 的复制操作
- 使用简单两相锁定的并发程序
- 锁定来自其他线程的类成员
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 同一互斥锁顺序上的锁定和解锁是否一致?
- 共享内存的升压容器是否实现锁定?
- 当只有一个线程主要使用该对象而其他线程很少使用它时,如何最小化该对象的互斥锁锁定?
- 如何在 x86 处理器上实现"锁定添加"
- MCS 锁定实现的问题
- Sqlite3 C++数据库被锁定
- 如果互斥锁被锁定,则安全地跳过任务
- 在Qt中将应用程序方向锁定为横向