Est-il OK d'utiliser TableView dans l'application Quick Controls 2.0? Cela nécessitera d'avoir les deux importations:
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
Aurai-je des effets secondaires?
Autre question connexe: il semble que TableView appartient à l'ensemble Quick Controls 1.0. C'est ça? Cela signifie-t-il que s'il est possible d'utiliser TableView, il est alors possible d'utiliser tous les contrôles Quick Controls 1.0 dans l'application Quick Controls 2.0?
Bien qu'il soit possible de mélanger Qt Quick Controls 1 et 2 dans la même application, le plus gros problème est que Qt Quick Controls 1 n'est pas compatible avec la mise à l'échelle automatique à haute résolution de Qt, tandis que Qt Quick Controls 2 fonde son évolutivité sur cela. Par conséquent, l'exécution d'une telle application qui mélange les deux peut ne pas donner des résultats idéaux sur un écran haute résolution.
Étant donné que Qt Quick Controls 1 TableView
a de graves problèmes de performances, une alternative possible consiste à utiliser plain ListView
à partir du noyau Qt Quick avec Row
comme délégué. Avec Qt 5.9 et versions ultérieures, il est possible de spécifier explicitement la largeur du contenu et les directions de défilement afin qu'un ListView
vertical puisse également être balayé horizontalement. Voici un exemple de liste multi-colonnes trop simple, quelque chose que vous pouvez déjà essayer avec la dernière version bêta de Qt 5.9:
import QtQuick 2.9
import QtQuick.Controls 2.2
ApplicationWindow {
id: window
width: 360
height: 360
visible: true
ListView {
id: listView
anchors.fill: parent
contentWidth: headerItem.width
flickableDirection: Flickable.HorizontalAndVerticalFlick
header: Row {
spacing: 1
function itemAt(index) { return repeater.itemAt(index) }
Repeater {
id: repeater
model: ["Quisque", "Posuere", "Curabitur", "Vehicula", "Proin"]
Label {
text: modelData
font.bold: true
font.pixelSize: 20
padding: 10
background: Rectangle { color: "silver" }
}
}
}
model: 100
delegate: Column {
id: delegate
property int row: index
Row {
spacing: 1
Repeater {
model: 5
ItemDelegate {
property int column: index
text: qsTr("%1x%2").arg(delegate.row).arg(column)
width: listView.headerItem.itemAt(column).width
}
}
}
Rectangle {
color: "silver"
width: parent.width
height: 1
}
}
ScrollIndicator.horizontal: ScrollIndicator { }
ScrollIndicator.vertical: ScrollIndicator { }
}
}
Bien sûr, ce type de liste multi-colonnes simplifiée ne fournit pas de fonctionnalités telles que les colonnes mobiles et redimensionnables et autres cloches et sifflets qui ont été intégrés dans le bon vieux type TableView
. D'un autre côté, les performances sont à un tout autre niveau, donc si vous ciblez autre chose que des environnements de bureau classiques fonctionnant sur des ordinateurs avec des ressources infinies, cet itinéraire pourrait être utile. ;)
import QtQuick.Controls 1.4 as C
import QtQuick.Controls 2.0
C.TableView { //controls 1.4
Button { //controls 2.0
}
}
Cela vous aidera à éviter tout conflit indésirable entre les deux contrôles