[英]Test if QQuickView (QWindow) is full-screen in Qt 5.0.x
對於QWidget
我們可以使用flags() & Qt::WindowFullScreen
測試它是否全屏顯示。 這似乎與QQuickView
(這是一個QQuickWindow
的QWindow
) QWindow
,因為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.