Qt qml编程多窗口

前言:

        大约是在大一暑假的时候开始进行QT qml编程。一直用C++挺好,但是大家都说迁移Android的话还是QML做UI很好,所以尝试了一个滑动多窗口的qml的例子,感觉还是很好看。本来想用这个东西做一个基于andorid和win10的串口调试器,或者直接用android作为计算机和单片机通讯。但是时间问题所以只做了ui部分。另外之前,我也开发了一个多功能的通讯调试助手,可以wifi,蓝牙,串口三种调试的方式,可以说是万能的单片机调试助手,目的在给小组添加一点工具,好帮助开发。

   以下是窗口动作的展示:

                                              

由于没有逻辑部分所以,这个过程的实现,完全是由qml编程实现的,没有用到C++和QTQuick ui。

github代码查看点击这里

一般来讲,qml更多的是用于UI实现和渲染什么的,而主要逻辑则还是由C++完成,所以qml和C++可以混合编程。

QML是一种声明性语言,是Qt框架和Quick模块的一部分,它可以构建流畅和高性能的用户界面。

                             

 

Rimac automobili电动超级车信息娱乐系统使用Qt / QML编写。

我这里就不具体介绍了,点击这里,这篇博客介绍的比较细致。

import QtQuick 2.2
import QtQuick.Controls 2.1

ApplicationWindow {

    visible: true
    width: 640
    height: 600
    title: qsTr("万能调试小助手")
    property int i :0

    StackView {
        id: stack
        initialItem: mainView
        anchors.fill: parent
    }
    Page {
        id: mainView
        Image {
            id: image_main
            anchors.fill: parent
            source: "qrc:/qtquickplugin/images/template_image.png"
        }
        Text {
            id: text1
            x: 9
            y: 549
            width: 251
            height: 33
            text: qsTr("万能调试助手,版本1.0")
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 18
            font.bold: false
            font.pixelSize: 18
        }
        Button {

            id: button
            x: 235
            y: 360
            width: 170
            text: qsTr("遥控器")
            anchors.verticalCenter: parent.verticalCenter
            anchors.horizontalCenter: parent.horizontalCenter

            onClicked: {

                page_Contral.visible =true;
                page_Contral.stack = stack;
                stack.push(page_Contral)
            }
        }
        Button {
            x: 519
            y: 429
            height: 51
            width: 121
            text: qsTr("设置")
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            onClicked: {
                page_set.visible = true;
                page_set.stack = stack;
                stack.push(page_set)
            }
        }
        Column {
            id: column
            anchors.fill: parent
        }
        Button {
            id: button1
            x: 235
            y: 217
            width: 170
            text: qsTr("通讯调试")
            anchors.horizontalCenterOffset: 0
            anchors.horizontalCenter: parent.horizontalCenter
            topPadding: 2
            onClicked: {

                page_messgae.visible =true;
                page_messgae.stack = stack;
                stack.push(page_messgae)

            }
        }
    }
    Message{
        id:page_messgae
        visible: false
    }
    Set{
        id:page_set
        visible: false
    }

    Contral{
        id:page_Contral
        visible: false
    }
    Serial{
        id:page_serial
        visible: false
    }
}

以上是最主要的文件,就是申明了几个Page,通过几个button来进行页面的切换,在代码中你可以看到其他的文件的代码。

有了这个例子,那么以后再做一个项目的时候UI实现就可以相当顺利,而且也和美观,拜托了以往那种桌面的‘呆板UI’。

 

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值