Je souhaite démarrer une application en plein écran (MacOS 10.8.x, Qt 5.1.1, C++) en fonction des paramètres:
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
Le comportement des réglages est parfait, fonctionne à merveille. Mais this->showFullScreen()
fait quelque chose de très moche:
Je peux fournir une vidéo si nécessaire. Comment éviter cela?
J'ai déjà fait face à ce problème et une solution très agréable a été de retarder le passage au plein écran d'une seconde (avec QTimer ):
QTimer::singleShot(0, this, SLOT(showFullScreen()));
vous pouvez essayer QMainWindow::showFullScreen()
;
{
ui->setupUi(this);
QMainWindow::showFullScreen();
}
utilisez ce qui suit si vous voulez que l'application s'ouvre en tant que maximized window:
Mainwindow w;
w.setWindowState(Qt::WindowMaximized);
w.show();
utilisez ce qui suit si vous voulez que l'application s'ouvre en tant que plein écran fenêtre:
Mainwindow w;
w.setWindowState(Qt::WindowFullScreen);
w.show();
Les états QWidget devraient vous aider. Suivez cette documentation Qt: QWidget :: setWindowState .
Manière de mettre l'application en plein écran:
MainWindow w;
w.setWindowState(w.windowState() ^ Qt::WindowFullScreen);
Merci
Essayez d'appeler showFullScreen()
dans showEvent()
. Je ne peux pas le vérifier avec Qt 5.1.1 pour le moment, mais cela a très bien fonctionné avec 4.8.x
J'utilise un QWidget comme fenêtre principale, mais je le fais parfaitement fonctionner avec cette simple ligne:
this->showMaximized();
Lors de l'exécution, il est apparu remplir l'écran entier immédiatement et en douceur.
J'ai fait un chemin aujourd'hui, cela me semble préférable jusqu'à maintenant. J'ai essayé beaucoup d'autres solutions, mais rien n'a fonctionné.
ce que je fais est;
obtenir clairement la résolution d'écran disponible.
redimensionner la fenêtre simplement avant la fenêtre de showinf
montrant la fenêtre normalement
gardez à l'esprit que si vous affichez Windows avant de définir le redimensionnement de la fenêtre, et si vous avez une scène dans le programme principal, le défilement ne sera pas au centre à cause du redimensionnement. De plus, la fenêtre peut ne pas être positionnée correctement. Donc premièrement setFixedSize et ShowNormal comme ci-dessous ..
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();
}
en plus, vous pouvez faire setFixedSize au lieu de resize , exactement de la même manière, la taille sera donc statique, personne ne pourra la changer ..
Ce que j'ai fait était juste de retarder le passage au plein écran d'une seconde avec un Qtimer. Ce n'est pas la meilleure solution, mais cela résout le problème. Bonne chance!