QObject *artistLabel = rootItem->findChildren("artistLabel"); artistLabel->setProperty("text", m_currentSong->artist); ... QObject *nextButton = rootItem->findChildren("nextButton"); connect(nextButton, SIGNAL(clicked()), this, &MusicPlayer::nextSong); QObject *musicPlayer = nextButton->parent(); QMetaObject::invokeMethod(musicPlayer, "startAnimation", Q_ARG(QVariant, duration));
Text { text: musicPlayer.currentSong.artist } Button { onClicked: musicPlayer.nextSong() } Slider { value: musicPlayer.volume }
class MusicPlayer : public QObject { Q_INVOKABLE void setVolume(int volume) { m_backend->setVolume(volume); } }
property int volume: 50 Slider { value: volume onRightPressed: { volume = Math.min(100, volume + 5); musicPlayer.setVolume(volume); } }
class MusicPlayer : public QObject { Q_PROPERTY(int volume READ volume NOTIFY ...) public: int volume() const { return m_volume; } Q_INVOKABLE void increaseVolume() { m_volume = qMin(100, volume + 5); m_backend->setVolume(m_volume); } private: int m_volume = EAR_BLEEDING_LOUD; }
Slider { value: musicPlayer.volume onRightPressed: musicPlayer.increaseVolume() }
2020.06.23 10:50
2020.06.23 12:13
어떤 데이터를 QML로 직접 다루는 것이아니라 UI 즉 QML로는 Invoke 역할을 하는 것이죠.. QML에서 데이터를 다루는 것은 반응성 및 성능면에서 좋지않을 것입니다.
2021.11.10 09:17
이해가 확 되네요. 좋은 자료 감사합니다
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 | 운영자 | 2019.01.05 | 86175 |
8 | QML에서 Websocket 서버와 통신 | makersweb | 2021.09.18 | 834 |
7 | QML에서 D-Bus 통신 | makersweb | 2023.03.15 | 710 |
6 | OpacityMask 예제 | makersweb | 2023.01.26 | 655 |
5 | QML과 코루틴(Coroutines) | makersweb | 2020.11.03 | 581 |
4 | 앱을 종료할 때 QML 바인딩 오류를 피하는 방법 | makersweb | 2021.08.08 | 499 |
3 | QtQuick 애플리케이션에 Rive 애니메이션 통합 | makersweb | 2024.03.31 | 481 |
2 | Binding 타입으로 객체 속성 간 묶기 | makersweb | 2022.03.04 | 428 |
1 | 그래픽 소프트웨어에서 디자인 내보내기 (Exporting Designs from Graphics Software) | j2doll | 2020.12.25 | 416 |
QML이 화면 구성의 역할만 하는것이 아니고 cpp의 동작 함수들을 컨트롤 하는것이 좋은것인가요??