Исправьте ориентацию приложения Qt в альбомной ориентации.
Разработка планшетного приложения qt на платформе Windows. В соответствии с нашим требованием необходимо исправить приложение в ландшафтном режиме, но не может это исправить. Мы использовали QMainWindow.
Приведено несколько ссылок, чтобы исправить проблему, но не сработало.
Ссылка 1, Ссылка 2: проверяется переопределением функций.
Ссылка 3: Также пробовал это в нашем приложении qt, но не сработало.
Ниже приведен пример кода:
mainwindow.h
#include <QMainWindow>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
int heightForWidth(int w) const;
QSize sizeHint() const;
private:
Ui::MainWindow *ui;
};
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QVBoxLayout>
#include <QDebug>
#include "windows.h"
#include "qt_windows.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// typedef BOOL (WINAPI* SETAUTOROTATION)(BOOL bEnable);
// SETAUTOROTATION SetAutoRotation = (SETAUTOROTATION)GetProcAddress(GetModuleHandle(TEXT("user32.dll")),
// (LPCSTR)2507);
// if (SetAutoRotation != nullptr)
// {
// qDebug() << "bEnable: " << SetAutoRotation;
// SetAutoRotation(FALSE);
// }
// qDebug() << "bEnable: " << SetAutoRotation;
MainWindow w;
w.showMaximized();
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "windows.h"
#include "qt_windows.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
QSizePolicy currPolicy = this->sizePolicy();
currPolicy.setHeightForWidth(true);
this->setSizePolicy(currPolicy);
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::heightForWidth(int w) const
{
return (w * 240 )/320;
}
QSize MainWindow::sizeHint() const
{
int w = 1366;
return QSize(w, heightForWidth(w) );
}
Может кто-нибудь помочь мне исправить это. Пожалуйста, дайте мне знать, если я делаю что-то не так в приведенном выше коде.
1 ответ
Была такая же проблема и, к сожалению, лучшим решением было просто отключить вращение в настройках Windows. Я сомневаюсь, что есть разумный способ сделать это из приложения, но я не уверен на 100%. Единственное другое решение, которое я нашел, было нарисовать ваш вид в соответствии с поворотом Windows (чтобы вид был нарисован повернутым).