it-swarm.com.de

Qt FullScreen beim Start

Ich möchte eine Anwendung im Vollbildmodus starten (MacOS 10.8.x, Qt 5.1.1, C++), abhängig von den Einstellungen: 

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

Die Einstellungen sind perfekt und wirken wie ein Zauber. Aber this->showFullScreen() macht etwas sehr Hässliches:

  1. Zeigen Sie das Fenster im Vollbildmodus an 
  2. Zeigen Sie das Fenster in normaler Größe in der Mitte an
  3. Skalieren Sie das Fenster auf Vollbild

Ich kann bei Bedarf ein Video zur Verfügung stellen. Wie vermeide ich das?

edit:

füge das Video hier hinzu, machte ein besseres Snippet ohne die Einstellungen

15
Thomas Ayoub

Ich war bereits mit diesem Problem konfrontiert und eine sehr schöne Lösung bestand darin, den Vollbildwechsel um eine Sekunde zu verzögern (mit einem QTimer ):

QTimer::singleShot(0, this, SLOT(showFullScreen()));
18
Martin Delille

sie können QMainWindow::showFullScreen() versuchen;

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

}
10
Ervis Tusha

verwenden Sie Folgendes, wenn Sie die App als maximized window öffnen möchten:

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

verwenden Sie Folgendes, wenn Sie die App als fullscreen window öffnen möchten:

Mainwindow w;
w.setWindowState(Qt::WindowFullScreen);
w.show();
6
Zhang Tianbao

QWidget-Zustände sollten Ihnen helfen. Folgen Sie dieser Qt-Dokumentation: QWidget :: setWindowState

So platzieren Sie die App im Vollbildmodus:

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

Vielen Dank

6

Versuchen Sie, showFullScreen() in showEvent() aufzurufen. Ich kann es derzeit nicht mit Qt 5.1.1 überprüfen, aber mit 4.8.x hat es gut funktioniert

1
ixSci

Ich verwende ein QWidget als Hauptfenster, aber ich konnte es mit dieser einfachen Zeile perfekt ausführen:

this->showMaximized();

Beim Laufen schien es den gesamten Bildschirm sofort und reibungslos auszufüllen.

0
Zac

Ich habe heute einen Weg gefunden, der für mich bis jetzt am besten ist. Ich habe viele andere Lösungen ausprobiert, nichts hat funktioniert.

was ich tue ist

  • verfügbare Bildschirmauflösung klar.

  • Ändern der Größe des Fensters vor dem Showinf-Fenster

  • zeigt das Fenster normal

denken Sie daran, wenn Sie showWindow vor dem Einstellen der Fenstergröße einstellen und wenn Sie eine Szene im Hauptprogramm haben, wird der Bildlauf aufgrund der Größenänderung nicht in der Mitte angezeigt. Möglicherweise ist das Fenster nicht richtig positioniert. Also erstens setFixedSize und ShowNormal wie unten ..

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();

}

außerdem können Sie setFixedSize anstelle von resize verwenden, und zwar auf genau dieselbe Weise, so dass die Größe statisch ist, niemand kann sie ändern.

0
questioner

Was ich getan habe, war, den Fullscreen-Switch mit einem Qtimer um 1 Sekunde zu verzögern. Dies ist nicht die beste Lösung, löst aber das Problem. Viel Glück!

0
ultimatetechie