gpt4 book ai didi

c++ - 测试 QQuickView (QWindow) 在 Qt 5.0.x 中是否全屏

转载 作者:太空狗 更新时间:2023-10-29 21:45:20 31 4
gpt4 key购买 nike

对于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并且表现得当。

如何测试 QWindow 是否在 Qt 5.0.x 中全屏显示 ?我想实现一个“切换全屏”功能。跟踪当前状态似乎是错误的方式(但它可能是一种解决方法)。我不明白为什么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);

关于c++ - 测试 QQuickView (QWindow) 在 Qt 5.0.x 中是否全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834835/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com