Есть приложение с областью, которая реагирует на клик мышки:
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
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Числовая последовательность называется пилообразной если каждый ее член (кроме первого и последнего) либо больше обоих своих соседей, либо...
Установка пустого атрибута ACCESS_EXTERNAL_DTD вызывает исключение "не поддерживается: http://javaxxml
Получилось синхронизировать состояние бокового меню с кнопкой бургера через ActionBarDrawerToggleТ
На интервью задали такую задачу: дан массив длиной n, необходимо реализовать методы добавления элемента и обнуление(значения всех элементов...