QT QML初体验随笔之QQuickView(2)

来源:互联网 发布:linux arp d 编辑:程序博客网 时间:2024/05/16 00:50

QQuickView 去掉标题栏后如何执行关闭窗口


QT QML初体验随笔之QQuickView(1)基础上进行解开注释想用自己设计的关闭按钮控制窗口关闭时遇到很有趣的问题:

关闭按钮点击关联槽函数:

添加 Qt.quit(),运行时提示:


Signal QQmlEngine::quit() emitted, but no receivers connected to handle it.


无所适从的我想到QT QML初体验随笔之QQuickView(1)总结,经查询QQuickView确实有close()的C++代码关闭窗口

如何将QQuickView的C++代码中的close()函数与QML相关联,这是一个思路:

上天很眷顾我,被我查到相关代码:就是调用QQmlContext进行QQuickView的注册,即可在QML中使用QQuickView注册对象的方法

QQuickView(1)的main.cpp基础上添加

#include <QApplication>#include <QQmlContext>// 添加#include <QQuickView>int main(int argc, char *argv[]){    QApplication app(argc, argv);    QQuickView viewer;    viewer.rootContext()->setContextProperty("wndCtrl", &viewer); // 调用QQmlContext进行自身注册    viewer.setResizeMode(QQuickView::SizeRootObjectToView);    viewer.setFlags(Qt::Window| Qt::FramelessWindowHint);    viewer.setSource(QUrl("../TcpTestV/main.qml"));    viewer.show();    return app.exec();}


QQuickView(1)的main.qml上即可调用

import QtQuick 2.4import QtQuick.Controls 1.3Rectangle{    id: mainWnd;    height: 600;    width: 960;    color: "green";    border.width: 2;    border.color: "#ff808080";//    border.color: "#ffc0c0c0";//    radius: 10;    opacity: 1;        // 区分颜色透明度和窗口透明度    Button {        anchors.centerIn: parent;        text: "关闭";        onClicked: {            wndCtrl.close();// 注册后即可使用注册名进行viewer对象调用        }    }}


这是不是提前学习QML与C++结合迈出的第一步呢?





0 0
原创粉丝点击