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 | 86967 |
8 | ShaderEffect QML Type 을 이용한 그래픽효과 | makersweb | 2018.12.09 | 2217 |
7 | Qml에서 커튼효과 구현 예제 - Shader Effects | 운영자 | 2018.12.05 | 1188 |
6 | QML에서 동적으로 텍스트 다국어 처리 | makersweb | 2018.11.04 | 4327 |
5 | Qml에서 키보드 입력 이벤트 핸들링 | makersweb | 2018.08.09 | 3710 |
» | Qml 및 C++개발시 유용한 팁 [3] | makersweb | 2018.04.06 | 6153 |
3 | QML에서 undefined를 확인하는 방법 | makersweb | 2017.11.29 | 1558 |
2 | Qml 사용자 ScrollBar 구현 | makersweb | 2015.07.24 | 6288 |
1 | z-order 를 컨트롤 하기위한 방법 | makersweb | 2015.05.13 | 6673 |
QML이 화면 구성의 역할만 하는것이 아니고 cpp의 동작 함수들을 컨트롤 하는것이 좋은것인가요??