Подтвердить что ты не робот

Qt FullScreen при запуске

Я хочу запустить приложение в полноэкранном режиме (MacOS 10.8.x, Qt 5.1.1, C++) в зависимости от настроек:

main.cpp

#include "MainWindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showFullScreen();

    return a.exec();
}

mainwindow.cpp

#include "MainWindow.h"
#include "ui_MainWindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Набор настроек идеален, работает как шарм. Но this->showFullScreen() делает что-то очень уродливое:

  1. Показать окно в полноэкранном режиме
  2. Покажите окно в нормальном размере в центре
  3. Масштабировать окно до полного экрана

Я могу предоставить видео, если это необходимо. Как этого избежать?

редактировать:

добавь видео сюда, сделал лучший фрагмент без настроек
4b9b3361

Ответ 1

Я уже сталкивался с этой проблемой, и очень хорошим решением было отложить переключение полноэкранного режима на одну секунду (используя QTimer):

QTimer::singleShot(0, this, SLOT(showFullScreen()));

Ответ 2

вы можете попробовать QMainWindow::showFullScreen();

{
    ui->setupUi(this);
    QMainWindow::showFullScreen();

}

Ответ 3

Состояние QWidget должно помочь вам. Следуйте этой Qt-документации: QWidget:: setWindowState.

Способ установки приложения в полноэкранный режим:

MainWindow w;    
w.setWindowState(w.windowState() ^ Qt::WindowFullScreen);

Спасибо

Ответ 4

используйте следующее, если вы хотите открыть приложение как максимально:

Mainwindow w;
w.setWindowState(Qt::WindowMaximized);
w.show();

используйте следующее, если вы хотите открыть приложение как полноэкранное окно:

Mainwindow w;
w.setWindowState(Qt::WindowFullScreen);
w.show();

Ответ 5

Попробуйте вызвать showFullScreen() в showEvent(). Я не могу проверить его с Qt 5.1.1 в настоящее время, но он отлично справился с 4.8.x

Ответ 6

То, что я сделал, это просто задержать полноэкранный переключатель на 1 секунду с помощью Qtimer. Это не лучшее решение, но оно устраняет проблему. Удачи!

Ответ 7

Сегодня я сделал способ, мне кажется, лучше для меня до сих пор.. Я пробовал много других решений, ничего не получилось.

что я делаю,

  • ясно видно разрешение экрана.

  • изменение размера окна перед окном showinf

  • отображение окна обычно

Имейте в виду, если вы показываете окноWindow перед установкой изменения размера окна, и если у вас есть сцена в главной программе, прокрутка не будет в центре из-за изменения размера. Также окно может быть неправильно установлено. Итак, сначала setFixedSize и ShowNormal, как показано ниже.

int main(int argc, char *argv[])
{

QApplication app(argc, argv);
WhateverMainWindowClass *w = new WhateverMainWindowClass();

/////////////////////////

QRect screenGeometry = QApplication::desktop()->availableGeometry();
w->resize(screenGeometry.width(), screenGeometry.height());
w->showNormal();

/////////////////////////

return app.exec();

}

Кроме того, вы можете сделать setFixedSize вместо изменить размер, точно так же, как и размер будет статическим, никто не сможет его изменить.. p >

Ответ 8

Я использую QWidget как основное окно, но я получил его, чтобы отлично работать с этой простой строкой:

this->showMaximized();

После запуска он сразу же заполнил весь экран и плавно.