[Qt6][QML][チュートリアル]QML 動的ヒストグラム

前節では高解像度のマウス座標オフセットの問題を解決しましたが、今回は動的ヒストグラム全体を使用して、リアルタイムのオーディオスペクトル表示を実現します。

チュートリアルは MediaStateT に適用されます

MediaStateT Github プロジェクトのアドレス: https://github.com/taxue-alfred/MediaStateT

MediaStateT Gitee プロジェクトのアドレス: https://gitee.com/MediaState/MediaStateT

結果を示す

効果は感じますか?手放してから、時間をかけて美しく美しくしてください。. また、マルチスレッド化する必要があるようです。.

実装説明

ここには 2 つのチャネルがあります。1 つのチャネルについて説明しますが、残りは同じです。基本的なフレームワークを作成することから始めます。

ChartView{
    
    
    id:left_bar
    //            title: qsTr("左声道")
    Layout.minimumWidth:320
    Layout.minimumHeight:240
    antialiasing:true
    legend.visible:false

    BarCategoryAxis{
    
    
        id:left_bar_value_X
        labelsVisible:false
        gridVisible:false
        //这里添加下标,到时候隐藏,不然到时候进行数据替换没法替换,数量一定要和想要显示的个数一致
        categories: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
    }

    ValueAxis{
    
    
        id:left_bar_value_Y
        visible:false
        min:0
        max:1000
    }

    BarSeries{
    
    
        axisX:left_bar_value_X
        axisY:left_bar_value_Y

        BarSet {
    
    
            id:bar1
            label: "Bob";
            //这里对应数值,到时候隐藏,不然到时候进行数据替换没法替换,数量一定要和想要显示的个数一致
            values: [2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
        }
    }
}

特定のデータ置換:

コードの一部をここに抜粋します. プロジェクトのソース コードと比較すると, ルック アンド フィールに影響を与える大量のコードを避けるために, 折れ線グラフ部分とヒストグラムの右チャネル部分が削除されています.すべてのコードについてはプロジェクトを参照してください

ここでは、いくつかの必要なことについて説明します。

  • データの置換にはYourBarID.replace(index, value)関数が必要です
  • 名前が示すように、freInterFace.data_vector はデータを格納する場所であり、独自のデータに置き換えるだけです。
  • 私のヒストグラムには合計 10 列あります。したがって、j<=10、特定の状況は自分で置き換えられます
  • bar1 は左チャンネルのヒストグラム ID です。特定の状況では自分で置き換えてください
Timer{
    
    
    id:update_value
    repeat:true
    running:true
    interval:45
    onTriggered: {
    
    
        //检测窗口是否处于活跃状态
        if(root_window.active === true){
    
     
                for(var j = 0;j <= 10;j++){
    
    
                    bar1.replace(j, freInterface.data_vector[3][j+1])
                }
            }
        }
    }
}

上のセクションと下のセクションの他の記事については、私の Qt コレクションを参照してください。. 次のセクションを書くのが本当に面倒です。

https://blog.csdn.net/qq_38844263/category_11578713.html

しつこい: このチュートリアルは終わりに近づいているように感じます。バグの修正と小さな機能の追加にすぎません (MediaStateBoard ボードの実装もありますが、Qt とは関係ありません)。もちろん、面白い機能を追加すると、別の記事か何かにつながります。この記事は主に、プロジェクトを書く過程で遭遇したいくつかの落とし穴や、より良い経験を共有することについて書かれています。このプロジェクトを書くことは、Netease Cloud の MACOS ポップアップ ウィンドウを見ることです。これは非常に優れており、1 つを模倣して新しい機能を追加したいと考えています。Qt6 は登場したばかりの新しいもので、インターネット上にいくつかのチュートリアルがあります。多くのプラットフォームのチュートリアルは、直接かつ自動的にコピーされます。あなたもそれを見ることができると思います。.

おすすめ

転載: blog.csdn.net/qq_38844263/article/details/122618970