对于QWidget
,我们可以测试它是否与 flags() & Qt::WindowFullScreen
全屏显示。
QQuickView
(这是QQuickWindow
,是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);