2016-12-07 3 views
0

Ich möchte eine Header-feste Tabelle erstellen. Die Idee, die ich jetzt habe, verwendet zwei ScrollView, eine für den Header (RowLayout), eine für den Körper (GridLayout). Gibt es eine einfache Möglichkeit, diese beiden in horizontaler Richtung zu verknüpfen, so dass ein Scroll, der andere Scroll gleich?Wie macht man zwei in QML verknüpfte Scrollviews?

+0

Was mit dem 'TableView' falsch? – Velkan

+0

@Velkan, hi, ich möchte dies später auf "erste Spalte als Header" erweitern. – Magicloud

+0

btw. Zukünftige Fragen: Es hilft immer, einen Code zur Verfügung zu stellen, mit dem man spielen kann, da es den Arbeitsaufwand für eine Person reduziert, die fähig und sogar bereit ist, eine Antwort zu geben. – derM

Antwort

2

Ich weiß nicht, wie es zu tun mit dem low-performingQtQuick.Controls 1.x, aber die QtQuick.Controls 2.0ScrollBar hat eine Eigenschaft position.

Also hier ist der Trick, zwei ScrollBar s, eins für jedes Element zu scrollen, und binden Sie die Position von jedem an die Position zu dem anderen.

ApplicationWindow { 
    visible: true 
    width: 300 
    height: 120 
    title: qsTr("Hello World") 


    Column { 
     anchors.fill: parent 
     Flickable { 
      id: flick1 
      width: parent.width 
      height: parent.height/2 
      contentHeight: 2 * height 
      contentWidth: 2 * width 
      Item { 
       anchors.fill: parent 
       Rectangle { 
        width: parent.height 
        height: parent.width 
        anchors.centerIn: parent 
        rotation: 90 

        gradient: Gradient { 
         GradientStop { position: 1; color: 'black' } 
         GradientStop { position: 0; color: 'white' } 
        } 
       } 
      } 

      ScrollBar.horizontal: scrl1 
     } 
     Flickable { 
      id: flick2 
      width: parent.width 
      height: parent.height/2 
      contentHeight: 2 * height 
      contentWidth: 2 * width 
      clip: true 

      Item { 
       anchors.fill: parent 
       Rectangle { 
        width: parent.height 
        height: parent.width 
        anchors.centerIn: parent 
        rotation: 90 

        gradient: Gradient { 
         GradientStop { position: 0; color: 'black' } 
         GradientStop { position: 1; color: 'white' } 
        } 
       } 
      } 

      ScrollBar.horizontal: scrl2 
     } 
    } 


    ScrollBar { 
     id: scrl1 
     orientation: Qt.Horizontal 
    } 

    ScrollBar { 
     id: scrl2 
     orientation: Qt.Horizontal 
    } 

    Binding { 
     target: scrl2 
     property: 'position' 
     value: scrl1.position 
    } 
    Binding { 
     target: scrl1 
     property: 'position' 
     value: scrl2.position 
    } 
} 

Wie ScrollBar s fast alles befestigen, die Sie in der Antwort auf diese Frage finden. Ich arbeite nicht mit Layouts so, ich kann nicht genauer auf sie sein.

how to create a scrollbar for rectangle in QML

+0

Auch wenn es eine neue Version gibt, QtQC 1 sind nicht veraltet AFAIK – GrecKo

+0

Ok, das war ein bisschen polemisch. Aber ich denke, Sie können sagen, es wird empfohlen, sie aus Leistungsgründen nicht zu verwenden? – derM

+1

Ich denke, sie bieten immer noch native Look auf Desktop-Software, wo QQC2 nicht, aber ja QQC2 sind leistungsfähiger, vor allem für Embedded-Plattformen. – GrecKo

Verwandte Themen