额,先说想法,原来是写了一个计算密度的一页QML,QML只写的界面,而实现的类在C++里,因为只有一页,所以在main函数里绑定槽,这样做的只有一页的时候绑定是可以的
QApplication app(argc, argv); CalGas calflow; //c++中的类
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///Calculator.qml")));
QList<QObject*> qmlin;
qmlin.append(engine.rootObjects()); QObject::connect(qmlin.first(),SIGNAL(qmlsend(QString,QString)),&calflow,SLOT(calslots(QString,QString)));
QObject::connect(&calflow,SIGNAL(valuedisplay(QVariant,QVariant,QVariant,QVariant,QVariant)),qmlin.first(),SLOT(qmlchange(QVariant,QVariant,QVariant,QVariant,QVariant)));
因为想添加一些其它页,所以主页做成一个列表,点击弹出其它界面,这样写的(跟例子中的touch一样)
StackView{
id:mSdview
anchors.fill: parent
initialItem: Item{
width: parent.width
height: parent.height
ListView{
anchors.fill: parent
model: pagemode
delegate: Mlistcompnet{
mintitle:pagetitle
onMlclicked: {
mSdview.push(Qt.resolvedUrl(gopage))
} } } } }
而Calculator.qml中的信号再也绑定不了,点里面的按钮也没反应。想问一下StackView中子容器中的各QML页面的信号怎么与C++类绑定,另外做这种多窗口还有其它的办法吗?