Я новичок в Qt Quck и Qt5/PyQt, и теперь у меня возникла странная проблема. Я пытаюсь найти объект с Objectname «тест» в приведенном ниже QML определение, как это:QObject :: findChild() возвращает None без видимой причины
self.rootObject().findChild(QObject, "test")
Но вызов возвращает None. Однако, если я переместю свойство objectName: "test"
в родительский элемент Tab, он будет найден успешно. В ребенке только не обнаружено Item
. Аналогичным образом, addChannel
, modifyChannel
и removeChannel
объекты также не найдены findChild()
.
import QtQuick 2.0
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.1
import "TouchStyles"
Item {
ListModel { }
TouchButtonFlatStyle { id: touchButtonFlat }
TouchTabViewStyle { id: touchTabView }
Rectangle {
width: 480
height: 230
TabView {
currentIndex: 0
tabPosition: 1
anchors.fill: parent
style: touchTabView
Tab {
title: "Play"
Item {
anchors.fill: parent
PianoKeyboard { anchors.centerIn: parent }
}
}
Tab {
title: "Channels"
Item {
objectName: "test"
ListView {
anchors.fill: parent
model: listModel
delegate: Channel {}
}
BorderImage {
border.bottom: 8
anchors.bottom: parent.bottom
source: "images/toolbar.png"
width: parent.width
height: 50
RowLayout {
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
Button { text: "Add"; objectName: "addChannel" }
Button { text: "Modify"; objectName: "modifyChannel" }
Button { text: "Remove"; objectName: "removeChannel" }
}
}
}
}
}
}
}
Что я делаю неправильно? В документации Qt говорится, что поиск выполняется рекурсивно. Почему он не пересекает все дерево объектов?
Лучше всего проверить, успешно ли поиск с C++. Если это не так, сообщите об этом как ошибку Qt. В противном случае это будет ошибка PyQt. –
Каков результат 'self.rootObject(). FindChildren (QObject)' (т. Е. Все дети)? –
То же самое происходит с первой вкладкой (так что если вы скопируете вкладку второй вкладки на первую вкладку)? В качестве альтернативы, если вы выбрали вторую вкладку перед выполнением findChild, то такая же проблема? – Schollii