gpt4 book ai didi

qt - 将带参数的信号从 qml 传递到 c++

转载 作者:行者123 更新时间:2023-12-02 01:36:21 24 4
gpt4 key购买 nike

我不知道如何将参数从 QML 文件传递​​到 Qt 中的 c++ 文件。

QML代码:

import QtQuick 1.1

Rectangle{
id:loin
height: 272
width:480
property alias loguid:loginuid
signal sigHome()
Rectangle{
id:rect1
width:parent.width-80
height:24
TextInput {
id:loginuid
maximumLength: 16
width: maximumLength * 20
focus: false
validator: RegExpValidator { regExp: /\d+/ }
KeyNavigation.down: login1
}
}
Button{
id: login1
x: 195
y: 187
height:30;
focus:false
border.color:"black"
opacity: activeFocus ? 1.0 : 0.5
Text{
text:"LOGIN"
anchors.horizontalCenter:login1.horizontalCenter;
anchors.verticalCenter:login1.verticalCenter;
}
Keys.onReturnPressed: {
if(loginuid.text < 1000000000000000)
{
text1.opacity=0.1
error1.visible=true
errorText.text="\n enter valid 16 digit number\n"
errorOk.focus=true
loginuid.focus=false
}
else{
loginuid.focus=false
loin.sigHome()
}
}
}
}

C++代码:

#include <QApplication>
#include <QDeclarativeView>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
int uid;
QDeclarativeView view;
view.setSource(QUrl::fromLocalFile("main.qml"));
view.show();
return app.exec();
}

当我按下登录按钮 rect1.text 内容时,会转到 main.cpp 文件,而 main.cpp 中的 uid 会获取 dat 值。像这样的uid=rect1.text
怎么做?

最佳答案

我不会尝试监听来自 C++ 端的 QML 信号。使用参数调用 C++ 方法要容易得多,并且效果相同:

为此,您必须:

  • 定义 slotinvokable接受所需参数的方法
  • register带有声明性引擎的方法的类
  • 那么你可以set此类的实例作为 root context 的属性最后从 QML 调用这个方法

official documentation 中也很好地介绍了这个主题。 .

关于qt - 将带参数的信号从 qml 传递到 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14229217/

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