簡體   English   中英

測試QQuickView(QWindow)是否在Qt 5.0.x中全屏顯示

[英]Test if QQuickView (QWindow) is full-screen in Qt 5.0.x

對於QWidget我們可以使用flags() & Qt::WindowFullScreen測試它是否全屏顯示。 這似乎與QQuickView (這是一個QQuickWindowQWindowQWindow ,因為QWindow::flags()總是返回Qt::WindowMinimized ,無論原因是什么。 我使用以下代碼顯示窗口:

QQuickView w;
w.setSource(...);
w.show(); /* or */ w.showFullScreen();

在Qt 5.1中, QWindow::visibility() 它返回一個新的枚舉類型,其中包含QWindow::FullScreen並且行為正常。

如何在Qt 5.0.x中全屏顯示QWindow 我想實現“切換全屏”功能。 跟蹤當前狀態似乎是錯誤的方式(但這可能是一種可能的解決方法)。 我不明白為什么QWindow::flags()返回Qt::WindowMinimized ...

重現問題的代碼(按RETURN查看QWindow::flags()的輸出):

test.qml

import QtQuick 2.0
Rectangle {
    signal test();
    width: 100; height: 100
    focus: true
    Keys.onReturnPressed: test()
}

main.cpp中

#include <QGuiApplication>
#include <QQuickView>
#include <QQuickItem>
#include <QDebug>

class Test : public QObject {
    Q_OBJECT
public slots:
    void test() {
        QQuickItem *item = qobject_cast<QQuickItem*>(sender());
        QQuickWindow *window = item->window();
        qDebug() << window->flags(); // Will print 0x1 == Qt::WindowMinimized
    }
};
int main(int argc, char *argv[])
{
    QGuiApplication a(argc, argv);

    QQuickView w;
    w.setSource(QUrl("...(relative path to the qml file from above)..."));
    w.show(); // Please also test w.showFullScreen();

    QObject::connect(w.rootObject(), SIGNAL(test()),
                     new Test, SLOT(test()));

    return a.exec();
}

#include "main.moc"

test.pro

QT += quick
TEMPLATE = app
SOURCES += main.cpp

使用方法QWindow :: windowState() 它返回您尋找的關鍵Qt :: WindowFullScreen

bool isFullScreen = w.windowState().testFlag(Qt::WindowFullScreen);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM