1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
--- main.cpp.orig 2022-11-16 15:25:11.221100107 +0100
+++ main.cpp 2022-11-18 09:30:01.084064039 +0100
@@ -1,5 +1,22 @@
#include <QGuiApplication>
#include <QQuickView>
+#include <QScreen>
+
+void setFullscreen(QQuickView *view, const QScreen *screen)
+{
+ QSize screenSize = screen->size();
+ /* If we set fullscreen and screen size is 0,0 the application crashes.
+ * Therefore, we only set fullscreen mode when the screen size is big enough.
+ * We have to set visible false before we change the window state, else it
+ * won't update correctly and we might have a title bar */
+ if ((screenSize.height() > 1) && (screenSize.width() > 1)) {
+ view->setVisible(false);
+ view->setWindowStates(Qt::WindowFullScreen);
+ }
+
+ /* We always need to set visible to true, else the window will not show up */
+ view->setVisible(true);
+}
int main(int argc, char* argv[])
{
@@ -10,9 +27,15 @@
const QString lowerArgument = QString::fromLatin1(argv[1]).toLower();
if (lowerArgument == QLatin1String("--fullscreen")) {
- view.showFullScreen();
- } else {
+ QObject::connect(&view, &QQuickView::screenChanged, &app, [&view](QScreen *screen) {
+ setFullscreen(&view, screen);
+ }, Qt::DirectConnection);
+
+ setFullscreen(&view, view.screen());
+ }
+ else {
view.show();
}
+
return app.exec();
}
|