zoukankan      html  css  js  c++  java
  • 19.Quick QML-GroupBox自定义

    GroupBox用来将子类的部件显示在其边框内部,并且一般默认左上有一个标题。
    GroupBox不提供自己的布局.所以需要我们自己通过ColumnLayout或者其他布局方式来进行布局.
    GroupBox的title属性用来设置要显示的标题内容,label属性则是用来设置标题的样式
    接下来我们便来自定义一个GroupBox
    首先创建DynamicGroupBox.qml文件.内容如下所示(qt5.12版本):

    import QtQuick 2.0
    import QtQuick.Controls 2.14
    import QtGraphicalEffects 1.14
    GroupBox {
          property var radiusVal: 3                     // 圆角值
          property var borderWidth:  1                  // 边框宽度
          property var borderColor: "#97C4F5"           // 边框颜色
          property var titleColor:  "#2359B7"           // 标题颜色
          property var titleLeftBkColor:  "#C9DDF8"     // 标题最左侧背景色
          property var titleRightBkColor:  "#F7FAFF"    // 标题最右侧颜色
          property var titleTopPadding:  3              // 标题的顶部内边距
          property var contentBkColor:  "#77F0F6FF"     // 内容背景色
          property var titleFontPixel:  16
    
          id: control
          title: qsTr("GroupBox")
    
    
          background: Rectangle {
              anchors.fill: control
              radius: radiusVal
              border.color: borderColor
              color: contentBkColor
              clip: true
              Item {
                      x: borderWidth
                      y: borderWidth
                       parent.width - borderWidth * 2
                      height: control.topPadding - control.bottomPadding - borderWidth * 2 + titleTopPadding * 2
                      clip: true
    
                      Rectangle {        // 设置标题的背景色
                            anchors.fill: parent
                            color: "#228833"
    
                            LinearGradient {
                                anchors.fill: parent
                                source: parent
                                start: Qt.point(0, 0)
                                end: Qt.point(parent.width, 0)
                                gradient: Gradient {
                                    GradientStop { position: 0.0; color: titleLeftBkColor }
                                    GradientStop { position: 1.0; color: titleRightBkColor }
                                }
                            }
                      }
              }
          }
    
          label: Label {        // 设置title的属性
               y:  titleTopPadding + 3
               x: control.leftPadding
                control.availableWidth
               text: control.title
               color: titleColor
               elide: Text.ElideRight
               font.family: "Microsoft Yahei"
               font.pixelSize: titleFontPixel
    
          }
    
    
    }

    然后我们在main.qml中使用它

    import QtQuick 2.2
    import QtQuick.Window 2.0
    import QtQuick.Controls 2.12
    import QtQuick.Layouts 1.14
    Window {
        visible: true;
         400
        height: 300
    
        DynamicGroupBox {
              anchors.centerIn: parent
              title: "详细查询"
    
              ColumnLayout {
                  anchors.fill: parent
                  CheckBox { text: qsTr("按价格查询") }
                  CheckBox { text: qsTr("按时间查询") }
                  CheckBox { text: qsTr("按日期查询") }
              }
               200
          }
    
    }

    效果如下所示:

     


    人间有真情,人间有真爱。

    如果您喜欢这里,感觉对你有帮助,并且有多余的软妹币的话,不妨投个食吧,赞赏的时候,留下美句和你的博客地址哦~   戳这里看谁投食了


查看全文
  • 相关阅读:
    codeforces 459 B.Pashmak and Flowers 解题报告
    poj 1789 Truck History 解题报告
    poj 1258 Agri-Net 解题报告
    poj 1860 Currency Exchange 解题报告
    poj 1094 Sorting It All Out 解题报告
    poj 3368 Frequent values 解题报告
    hdu 1548 A strange lift 解题报告
    BestCoder4 1002 Miaomiao's Geometry (hdu 4932) 解题报告
    hdu 1400 Mondriaan's Dream 解题报告
    打电话主要代码(意图用法)
  • 原文地址:https://www.cnblogs.com/lifexy/p/14751099.html
  • Copyright © 2011-2022 走看看