C++ qml从c++;?
我正在尝试为我的android apk设置applicationwindow{}大小,因此我希望从cpp文件中读取值: main.cpp:C++ qml从c++;?,c++,qt,qml,C++,Qt,Qml,我正在尝试为我的android apk设置applicationwindow{}大小,因此我希望从cpp文件中读取值: main.cpp: int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QScreen *screen = QApplication::screens().at(0); QVariant sz_width = screen->availableSize().wid
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QScreen *screen = QApplication::screens().at(0);
QVariant sz_width = screen->availableSize().width();
QVariant sz_height = screen->availableSize().height();
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
然后从qml文件读取它(main.qml):
这是为了以后在qml中方便地处理所有对象大小,因此,例如Basicali,我使用mainWindow的字体大小*0.5,这样我就可以为每个应用程序分辨率设置适当的字体大小,但它只有在我真正设置变量宽度和高度时才起作用
也许这个解决方案是一个但“病态的”,但我想这样做,如果你能帮助我正确的语法
谢谢
< P>快速使C++值在QML中可见,可以将它们设置为: <>这个变量在QML中可以引用的名称(“屏幕宽度”和“屏幕高度”)(如果您愿意,这些变量也可以与C++变量名匹配)。QSize
类型也是,因此您可以将大小设置为一个变量
engine.rootContext()->setContextProperty(“屏幕大小”,屏幕->可用大小())代码>
在这种情况下,您要查找的信息在QML中已经可用。。。检查连接的对象以及对象/属性以获得可用屏幕的列表
增加:
因为链接文档没有直接提到它,所以应该注意,以这种方式设置的上下文属性变量没有更改通知器信号。因此,与其他“可绑定”属性不同,它们不会在QML中自动更新。让QML自动更新该值的唯一方法是再次设置上下文属性(或者创建一些QML可以连接的信号,并使其重新读取该值)
我找不到Qt文档中提到的确切位置,但该页面提供了一个(微妙的)线索:
通过调用QQmlContext::setContextProperty()定义和更新上下文属性
<> >快速地将QC++值显示在QML中,可以将它们设置为:
<>这个变量在QML中可以引用的名称(“屏幕宽度”和“屏幕高度”)(如果您愿意,这些变量也可以与C++变量名匹配)。
QSize
类型也是,因此您可以将大小设置为一个变量
engine.rootContext()->setContextProperty(“屏幕大小”,屏幕->可用大小())代码>
在这种情况下,您要查找的信息在QML中已经可用。。。检查连接的对象以及对象/属性以获得可用屏幕的列表
增加:
因为链接文档没有直接提到它,所以应该注意,以这种方式设置的上下文属性变量没有更改通知器信号。因此,与其他“可绑定”属性不同,它们不会在QML中自动更新。让QML自动更新该值的唯一方法是再次设置上下文属性(或者创建一些QML可以连接的信号,并使其重新读取该值)
我找不到Qt文档中提到的确切位置,但该页面提供了一个(微妙的)线索:
通过调用QQmlContext::setContextProperty()定义和更新上下文属性
如果你使用QML,不要在C++中做GUI,它不是必须的,也是反模式的。C++可以简单地设置<代码>可见性:窗口。全屏你不提供所有的代码。你不实际在MIN中设置值。在QML中是可见的。如果你使用QML,不要在C++中做GUI,它不是必须的,也是反模式。在QML中,您可以简单地设置可见性:Window.FullScreen
您不提供所有的代码,也就是说,您实际上没有将main.cpp中的值设置为在QML中可见。
ApplicationWindow {
id: mainWindow
visible: true
width: sz_width
height: sz_height
}
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("screenWidth", sz_width);
engine.rootContext()->setContextProperty("screenHeight", sz_height);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));