• <menu id="w2i4a"></menu>
  • logo Qt使用教程2020

    文檔首頁>>Qt使用教程2020>>Qt入門教程:如何設(shè)置鬧鐘樣式(二)|附代碼

    Qt入門教程:如何設(shè)置鬧鐘樣式(二)|附代碼


    Qt是目前最先進、最完整的跨平臺C++開發(fā)工具。它不僅完全實現(xiàn)了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運用于超過70個行業(yè)、數(shù)千家企業(yè),支持?jǐn)?shù)百萬設(shè)備及應(yīng)用。

    點擊下載QT最新試用版

    qtquickcontrols2.conf

    以下代碼片段顯示了如何設(shè)置Dark主題:

    [Controls]
    Style=Material
    [Material]
    Theme=Dark
    Accent=Red

    main.qml

    mainWindow是ApplicationWindowQML類型,是此應(yīng)用程序中的源項目。

    ApplicationWindow {
        id: window
        width: 400
        height: 500
        visible: true

    ListView alarmListView將alarmModel中的數(shù)據(jù)與alarmDelegate中定義的布局相結(jié)合。

      ListView {
            id: alarmListView
            anchors.fill: parent
            model: AlarmModel {}
            delegate: AlarmDelegate {}
        }

    單擊RoundButton 可以添加新鬧鐘addAlarmButton。單擊它會打開一個對話框屏幕alarmDialog。

    RoundButton {
            id: addAlarmButton
            text: "+"
            anchors.bottom: alarmListView.bottom
            anchors.bottomMargin: 8
            anchors.horizontalCenter: parent.horizontalCenter
            onClicked: alarmDialog.open()
        }
    
        AlarmDialog {
            id: alarmDialog
            x: Math.round((parent.width - width) / 2)
            y: Math.round((parent.height - height) / 2)
            alarmModel: alarmListView.model
        }

    AlarmDialog.qml

    這個對話框屏幕有一個行布局,每個行布局有一個轉(zhuǎn)筒,分別表示小時和分鐘;另一個行布局具有一個轉(zhuǎn)筒,分別表示天、月和年。

    contentItem: RowLayout {
            RowLayout {
                id: rowTumbler
    
                Tumbler {
                    id: hoursTumbler
                    model: 24
                    delegate: TumblerDelegate {
                        text: formatNumber(modelData)
                    }
                }
                Tumbler {
                    id: minutesTumbler
                    model: 60
                    delegate: TumblerDelegate {
                        text: formatNumber(modelData)
                    }
                }
            }
    
            RowLayout {
                id: datePicker
    
                Layout.leftMargin: 20
    
                property alias dayTumbler: dayTumbler
                property alias monthTumbler: monthTumbler
                property alias yearTumbler: yearTumbler
    
                readonly property var days: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
                Tumbler {
                    id: dayTumbler
    
                    function updateModel() {
                        // Populate the model with days of the month. For example: [0, ..., 30]
                        var previousIndex = dayTumbler.currentIndex
                        var array = []
                        var newDays = datePicker.days[monthTumbler.currentIndex]
                        for (var i = 1; i <= newDays; ++i)
                            array.push(i)
                        dayTumbler.model = array
                        dayTumbler.currentIndex = Math.min(newDays - 1, previousIndex)
                    }
    
                    Component.onCompleted: updateModel()
    
                    delegate: TumblerDelegate {
                        text: formatNumber(modelData)
                    }
                }
                Tumbler {
                    id: monthTumbler
    
                    onCurrentIndexChanged: dayTumbler.updateModel()
    
                    model: 12
                    delegate: TumblerDelegate {
                        text: window.locale.standaloneMonthName(modelData, Locale.ShortFormat)
                    }
                }
                Tumbler {
                    id: yearTumbler
    
                    // This array is populated with the next three years. For example: [2018, 2019, 2020]
                    readonly property var years: (function() {
                        var currentYear = new Date().getFullYear()
                        return [0, 1, 2].map(function(value) { return value + currentYear; })
                    })()
    
                    model: years
                    delegate: TumblerDelegate {
                        text: formatNumber(modelData)
                    }
                }
            }
        }
    }

    如果在對話框中單擊“ 確定 ”,則輸入的數(shù)據(jù)將添加到alarmModel:

     onAccepted: {
            alarmModel.append({
                "hour": hoursTumbler.currentIndex,
                "minute": minutesTumbler.currentIndex,
                "day": dayTumbler.currentIndex + 1,
                "month": monthTumbler.currentIndex + 1,
                "year": yearTumbler.years[yearTumbler.currentIndex],
                "activated": true,
                "label": "",
                "repeat": false,
                "daysToRepeat": [
                    { "dayOfWeek": 0, "repeat": false },
                    { "dayOfWeek": 1, "repeat": false },
                    { "dayOfWeek": 2, "repeat": false },
                    { "dayOfWeek": 3, "repeat": false },
                    { "dayOfWeek": 4, "repeat": false },
                    { "dayOfWeek": 5, "repeat": false },
                    { "dayOfWeek": 6, "repeat": false }
                ],
            })
        }
        onRejected: alarmDialog.close()

    所有源文件代碼教程請關(guān)注后續(xù)文章。

    點擊獲取更多相關(guān)類產(chǎn)品文章信息

    如果你對我們的產(chǎn)品感興趣或者有任何疑問,歡迎咨詢慧都在線客服>>

    慧都高端UI界面開發(fā)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();