2016-11-06 6 views
2

Я создал новый проект и добавил scrollview с прямоугольником. Когда я запускаю проект, прямоугольник не отображается, но если я добавлю другой элемент управления, он появится. Я не уверен, что я делаю неправильно, я хочу видеть прямоугольник всегда.Прямоугольник в Scrollview не отображается

import QtQuick 2.7 
import QtQuick.Window 2.2 
import QtQuick.Controls 1.4 

Window { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 
    id: mainWindow 
    ScrollView{ 
     anchors.left: parent.left 
     anchors.top: parent.top 
     anchors.bottom: parent.bottom 
     anchors.topMargin: 0 
     anchors.bottomMargin: 0 
     width: 289 
     Rectangle{ 
      anchors.fill: parent 
      color: "blue" 
      MouseArea 
      { 
       anchors.fill: parent 
       onClicked: console.log("Click") 
      } 
     } 
    } 
} 

С помощью этого кода я получаю следующее окно (прямоугольник не виден): enter image description here

Однако если добавить кнопку в этом ScrollView ...

ScrollView{ 
     anchors.left: parent.left 
     anchors.top: parent.top 
     anchors.bottom: parent.bottom 
     anchors.topMargin: 0 
     anchors.bottomMargin: 0 
     width: 289 
     Rectangle{ 
      anchors.fill: parent 
      color: "blue" 
      MouseArea 
      { 
       anchors.fill: parent 
       onClicked: console.log("Click") 
      } 
     } 
     Button{ 
      text:"Test" 
     } 
    } 

появляется прямоугольник : enter image description here

Что случилось с моим первым кодом (без кнопки)?

ответ

2

ScrollView имеет два размера, размер вида управления в пользовательском интерфейсе и размер содержимого ScrollView.

При добавлении Rectangle без Button, вы указываете Rectangle, чтобы заполнить его parent. parent в этом случае является содержимым ScrollView. По умолчанию этот контент пуст, и вы указали Rectangle, чтобы заполнить это пустое пространство. Поэтому ничего не отображается.

При добавлении Button, который имеет явный размер, он заставляет содержание ScrollView быть не пусто, так что теперь Rectangle есть что-то, чтобы заполнить, таким образом, вы видите его.

+0

Так что я не могу сделать прямоугольник видимым без добавления другого элемента управления в scrollview? Это действительно странно. –

+0

Нет, вы можете сделать «Прямоугольник» видимым, если вы придадите ему размер. В вашем примере вы сконфигурировали 'Rectangle' для заполнения содержимого' ScrollView'. Если у 'ScrollView' нет содержимого, тогда размер этого содержимого равен 0x0. Поэтому размер 'Rectangle' равен 0x0. – Tim

+0

Оке, ты прав, спасибо! –