QuickViews 2.0アプリケーションでTableViewを使用しても問題ありませんか?これには、両方のインポートが必要です。
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
副作用はありますか?
関連するもう1つの質問:TableViewはQuick Controls 1.0セットに属しているようです。それは...ですか? TableViewを使用できる場合、Quick Controls 2.0アプリケーションですべてのQuick Controls 1.0コントロールを使用できるということですか。
Qt Quick Controls 1と2を同じアプリケーションで混在させることは可能ですが、最大の問題は、Qt Quick Controls 1はQtの自動高DPIスケーリングと互換性がないのに対し、Qt Quick Controls 2はそのスケーラビリティに基づいています。したがって、この2つを組み合わせたアプリケーションを実行しても、高DPIディスプレイでは理想的な結果が得られない可能性があります。
Qt Quick Controls 1 TableView
に重大なパフォーマンスの問題がある場合、1つの可能な代替策は、ListView
をデリゲートとしてQt QuickコアのプレーンRow
を使用することです。 Qt 5.9以降では、コンテンツの幅とフリックの方向を明示的に指定して、垂直ListView
を水平にフリックすることもできます。これは、非常に単純な複数列のリストの例です。最新の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 { }
}
}
もちろん、この種の簡略化された複数列リストは、移動可能でサイズ変更可能な列や、古き良きTableView
型に組み込まれた他のベルやホイッスルなどの機能を提供しません。一方、パフォーマンスはまったく異なるレベルにあるため、無限のリソースを持つコンピューターで実行されている従来のデスクトップ環境以外のものを対象とする場合は、このルートを検討する価値があります。 ;)
import QtQuick.Controls 1.4 as C
import QtQuick.Controls 2.0
C.TableView { //controls 1.4
Button { //controls 2.0
}
}
これは、2つのコントロール間の不要な衝突を回避するのに役立ちます