3

の場合QWidget、フルスクリーンで表示されるかどうかをテストできますflags() & Qt::WindowFullScreen。理由が何であれ、常に返されるように、同じことがQQuickView( aQQuickWindowである a QWindow) では機能しないようです。次のコードを使用してウィンドウを表示します。QWindow::flags()Qt::WindowMinimized

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

Qt 5.1 でQWindow::visibility()導入されました。QWindow::FullScreen正しく動作する新しい列挙型を返します。

Qt 5.0.xQWindowで aがフルスクリーンで表示されているかどうかをテストするにはどうすればよいですか? 「全画面切り替え」機能を実装したい。現在の状態を追跡することは間違った方法のようです (それでも回避策になる可能性はあります)。戻る理由がわかりません...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"

テストプロ

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

1 に答える 1

2
于 2016-06-07T10:36:02.303 に答える