[Qt6][QML][튜토리얼]QML 동적 히스토그램

이전 섹션에서는 고해상도 마우스 좌표 오프셋 문제를 해결했으며 이번에는 전체 동적 히스토그램을 사용하여 실시간 오디오 스펙트럼 표시를 구현합니다.

튜토리얼은 MediaStateT에 적용됩니다.

MediaStateT Github 프로젝트 주소: https://github.com/taxue-alfred/MediaStateT

MediaStateT Gitee 프로젝트 주소: https://gitee.com/MediaState/MediaStateT

결과 보여줘

효과가 괜찮은 것 같나요? 그냥 내버려두고 시간을내어 아름답게 꾸미십시오. . 그리고 멀티 쓰레드로 해야 할 것 같습니다. .

구현 설명

여기에는 두 개의 채널이 있으며 하나의 채널에 대해 이야기하고 나머지는 동일합니다. 기본 프레임워크를 만드는 것부터 시작하십시오.

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

잔소리: 이 튜토리얼은 거의 끝나가는 것 같고, 약간의 BUG 수정과 약간의 기능 추가에 지나지 않을 것입니다(MediaStateBoard 보드의 구현도 있지만 Qt와 관련이 없습니다). 물론 흥미로운 기능을 추가하면 다른 기사로 이어질 것입니다. 이 문서는 주로 프로젝트를 작성하거나 더 나은 경험을 공유하는 과정에서 발생하는 몇 가지 함정에 관한 것입니다. 이 프로젝트를 작성하는 것은 Netease Cloud의 MACOS 팝업 창을 보는 것입니다. 정말 좋습니다. 하나를 모방하고 새로운 기능을 추가하고 싶습니다. Qt6은 방금 나온 새로운 제품이며 인터넷에 몇 가지 자습서가 있습니다. 많은 플랫폼의 튜토리얼은 직접 자동으로 복사되며 여러분도 볼 수 있을 것이라고 믿습니다. .

추천

출처blog.csdn.net/qq_38844263/article/details/122618970