Итак, я пытаюсь создать традиционный внешний вид для моего приложения QML, которое просто состоит из TabBar
и SwipeView
. Есть также еще один компонент, который сводится к нажатию кнопки, что должно привести к появлению новой вкладки в TabBar
и новой страницы в SwipeView
. Это работает, за исключением того, что когда я нажимаю на предыдущую вкладку (есть статическая вкладка и страница при запуске приложения), страница в представлении не изменяется.
Вот мой файл QML -
import QtQuick 2.12
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.12
import QtQuick.Controls 2.13
ColumnLayout {
Layout.fillHeight: true
Layout.fillWidth: true
Component {
id: tabButton
TabButton {
width: implicitWidth
}
}
Component {
id: resultListView
Rectangle {
anchors.fill: parent
color: "green"
}
}
SwipeView {
id: tabBarLayout
Layout.fillHeight: true
Layout.fillWidth: true
interactive: false
currentIndex: 0
LogArea {
id: logArea
}
}
TabBar {
id: tabBar
currentIndex: tabBarLayout.currentIndex
Layout.fillWidth: true
font.capitalization: Font.MixedCase
TabButton {
text: qsTr("log")
width: implicitWidth
}
Connections {
target: qmlBridge
onLoadResultTab: {
tabBar.addItem(tabButton.createObject(tabBar, {text: qsTr("search - " + term)}))
tabBarLayout.addItem(resultListView.createObject())
tabBarLayout.incrementCurrentIndex()
console.log("Added new item...")
}
}
}
}
Сигнал onLoadResultTab
вызывается при нажатии кнопки. Как видите, я добавляю новый TabButton
и увеличиваю текущий индекс, а затем создаю еще один компонент, который на данный момент является простым Rectangle
. Теперь, когда я нажимаю кнопку «Журнал», SwipeView
не меняет свою страницу на страницу, соответствующую вкладке журнала. Кто-нибудь может указать, в чем здесь проблема?