Ale*_*lev 11 qt qml qtquickcontrols qtquickcontrols2
在Quick Controls 2.0应用程序中使用TableView是否可以?这将需要两个导入:
import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
我会得到任何副作用吗?
另一个相关的问题:似乎TableView属于Quick Controls 1.0集.是吗?是否意味着如果可以使用TableView,那么可以使用Quick Controls 2.0应用程序中的所有Quick Controls 1.0控件吗?
jpn*_*rmi 20
虽然可以在同一个应用程序中混合使用Qt Quick Controls 1和2,但最大的问题是Qt Quick Controls 1与Qt的自动高DPI缩放不兼容,而Qt Quick Controls 2的可扩展性基于此.因此,运行混合这两者的应用程序可能无法在高DPI显示器上提供理想的结果.
鉴于Qt Quick Controls 1 TableView存在严重的性能问题,一种可能的替代方案是使用ListViewQt Quick核心中的plain Row作为委托.使用Qt 5.9及更高版本,可以明确指定内容宽度和轻弹方向,以便垂直ListView也可以水平轻弹.这是一个过于简单的多列列表示例,您已经可以尝试使用最新的Qt 5.9 beta:
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类型中的其他铃声和口哨之类的功能.另一方面,性能处于完全不同的水平,因此如果您的目标不是在具有无穷无尽资源的计算机上运行的经典桌面环境,那么这条路线可能值得考虑.;)
小智 11
import QtQuick.Controls 1.4 as C
import QtQuick.Controls 2.0
C.TableView {  //controls 1.4
   Button {  //controls 2.0
   }
}
这将帮助您避免两个控件之间的任何不必要的冲突
| 归档时间: | 
 | 
| 查看次数: | 9408 次 | 
| 最近记录: |