zoukankan      html  css  js  c++  java
  • QML

    • 可以参考 OneNote for Windows 10 进行设计
      • 将原生窗口的非客户区隐藏, 在客户区自己添加一个 topBar, 在右侧添加最小化, 最大化和关闭窗口的按钮, 在中间添加 label 用于展示应用程序的名称
      • topBar 之下就是内容区域, 内容区域主要分为两个部分, 左侧部分是左侧的菜单栏, 右侧部分是页面, 用于显示内容。点击左侧菜单栏中的按钮即可切换右侧的页面, 并将选中的菜单栏设置为激活状态
    • 使用到的QML技术
      • 使用到的控件
        • Rectangle: 主要用于布局(充当背景, 起到HTML中div的作用, 如果充当div而不是背景色, 一般将背景置为透明)
        • Row: 也可以充当布局的功能, 一般用于布局中的每个元素大小相同
        • Columns: 可以充当布局的功能, 一般用于布局中的每个元素大小相同
        • Button: 最小, 最大和关闭按钮, 菜单栏中的按钮
        • Label: 显示标题等
        • Window: 主窗口
        • Image: 图片, 用于 Button 上比较多
        • Text
        • TextField: 可以用来制作搜索功能
      • UI 界面的层次结构
        • MainWindow(Window)
          • Background(Rectangle)
            • Container(Rectangle)
              • TopBar(Rectangle)
                • ApplicationName(Label)
                • Buttons(Rectangle)
                  • MinimizeButton(Button)
                  • MaximizeButton(Button)
                  • CloseButton(Button)
              • Content(Rectangle)
                • LeftMenu(Rectangle) 为了实现点击按钮会展开显示按钮的详细信息, 类似 OneNote, LeftMenu 的 clip 属性要设置成 true, 通过一些事件动态修改 LeftMenu 的 width 属性
                  • Button1(Button)
                  • Button2(Button)
                • Page(Rectangle)
                  • 显示动态加载的qml页面(可以使用Loader或者StackView, StackView加载动画)
      • 布局常用到的属性
        • Anchors.fill
        • Anchors.verticalCenter
        • Anchors.horizontalCenter
        • Anchors.left
        • Anchors.leftMargin
        • Width
        • Height
        • sourceSize.height
        • sourceSize.width
        • fillMode
        • Flags: 主要用于 Window, 这是 Qt.Window | Qt.FramelessWindowHint 可以取消非客户区
      • 自定义组件
        • 使用 property type name : value 定义属性, 当其他用户使用该组件的时候可以通过 name : value 的形式覆盖
        • 使用 QtObject { id: functions; function1(){}; function2() {}} 将需要用到的函数放在 QtObject 对象中, 方便管理
        • 使用 Connections { target: id; function onSignalName(arg){}} 保存与 Python 后端进行交互, 只要通过信号 Signal 的方式, Python 后端创建 Signal(str/填类型(这是为了传递参数给前端)) 对象, 在特定的时候调用 Signal.emit(参数), 就会启动前端中 Connections 中的 onSignal(参数) 函数并执行。其中 target: id用于相应 id 为 id 的组件的信号, 在 Python 中使用engine.rootContext().setContextProperty("id", ctx)设置
          • 前端可以直接使用Connections规定的id, 调用 id 中的方法
          • 后端需要通过信号.emit才能转到前端
      • 动画
        • 使用PropertyAnimation即可
      • 加强效果
        • 导入QtGraphicalEffects模块
        • 常用到的是ColorOverlay和DropShadow
          • ColorOverlay: 为图像上色
          • DropShadow: 添加阴影
      • 一定要实现的功能
        • 因为删除了非客户区, 导致窗口失去了拖动, 鼠标移动缩放的功能, 需要加上去
        • 使用到的API
          • 主窗口的 startSystemMove 和 startSystemResize
        • 使用到的组件
          • MouseArea
          • DragHandler

         

       

  • 相关阅读:
    vb中5种打开文件夹浏览框的方法总结(转)
    js 日期
    正则表达式
    HTML中meta的作用
    Java操作ElasticSearch
    Elastic安装
    Elasticsearch基本操作
    ubootfs2410移植(转)
    内核驱动系列字符设备驱动流程
    linux 内核移植
  • 原文地址:https://www.cnblogs.com/megachen/p/14836304.html
Copyright © 2011-2022 走看看