Есть приложение с областью, которая реагирует на клик мышки:
MouseArea {
anchors.fill: parent
onClicked: {
root.model.move(index)
}
}
Функция move делает, что положено, но внутри нее самой вызывается другая функция, реализованная следующим образом:
void GameBoard::changeStepCount()
{
int temp = m_stepCount.toInt();
temp++;
m_stepCount.setNum(temp);
emit stepCountChanged();
}
Объявления в классе следующие:
Q_PROPERTY(QString stepCount READ getStepCount NOTIFY stepCountChanged)
QString getStepCount() const;
void changeStepCount();
signals:
void stepCountChanged();
А вот код QML:
GameBoardModel {
id: _gm
onStepCountChanged: {
Qt.quit();
}
}
Result {
id: _info
width: root.width
height: 20
color: root.color
displayStepCount: "Step " + _gm.stepCount
}
Код C++ работает, значение m_stepCount изменяется, если проверять через qDebug() внутри функции changeStepCount(), однако не меняется stepCount в интерфейсе программы.
Пробовал и
onStepCountChanged: {
_info.displayStepCount = _gm.stepCount
}
, но результата никакого.
displayStepCount - это property string displayStepCount: "0" из файла Result.qml
Не могу понять, почему QML не реагирует.
Оказалось, что проблема была в инстациировании двух разных GameBoardModel в основном файле main.qml и файле GameBoard.qml, где этот объект использовался в качестве модели:
GridView {
id: root
model: GameBoardModel {
}
Проблема решилась в удалении из GameBoard.qml объекта GameBoardModel и передачи этой модели через основной файл main.qml.
То есть main.qml стал выглядеть так:
Было:
GameBoardModel {
id: _gm
}
Result {
id: _info
width: root.width
height: 20
color: root.color
displayStepCount: "Step " + _gm.stepCount
}
GameBoard {
anchors.top: _info.bottom
width: parent.width
height: parent.height - _info.height
}
Стало:
GameBoardModel {
id: _gm
}
Result {
id: _info
width: root.width
height: 20
color: root.color
displayStepCount: "Step " + _gm.stepCount
}
GameBoard {
model: _gm
anchors.top: _info.bottom
width: parent.width
height: parent.height - _info.height
}
Продвижение своими сайтами как стратегия роста и независимости