2016-12-24 63 views
0

在此QML示例中,未示出Rectangle。標籤Usuarios會出現,但矩形本身不會。非常奇怪的行爲,你能說出爲什麼嗎?你可以用qmlscene來測試這個例子。QML中未顯示矩形

示例代碼:

主文件:

$ cat UsersGroups.qml 
import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.3 

Page { 
    anchors.fill: parent 
    header: TabBar { 
     id: bar 
     width: parent.width 
     TabButton { 
      text: qsTr("Users") 
     } 
     TabButton { 
      text: qsTr("Groups") 
     } 
     TabButton { 
      text: qsTr("Schedules") 
     } 
    } 
    StackLayout { 
     width: parent.width 
     currentIndex: bar.currentIndex 
     Users { 
      id: users 
     } 
     Groups { 
      id: groups 
     } 
     Schedules { 
      id: schedules 
     } 
    } 
} 

輔助文件

用戶文件:

$ cat Users.qml 
import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Controls.Material 2.0 
import QtQuick.Dialogs 1.2 
import QtQuick.Layouts 1.3 
import Qt.labs.settings 1.0 

Item { 
    anchors.fill: parent 
    Rectangle { 
     anchors.fill: parent 
     color: "blue" 
     border.color: "red" 
     border.width: 5 
     Label { 
      text: "Usuarios" 
     } 
    } 
} 

組的文件:

$ cat Groups.qml 
import QtQuick 2.7 
import QtQuick.Controls 2.0 

Item { 
    Label { 
     text: "Grupos" 
    } 
} 

時間表文件:

$ cat Schedules.qml 
import QtQuick 2.7 
import QtQuick.Controls 2.0 


Item { 
    Label { 
     text: "Schedules" 
    } 
} 

會理解上解決這一問題的任何指針。

+0

StackLayout高度丟失,因此「矩形」的高度爲0,這是不可見的。將'height:parent.height'添加到'StackLayout'可以解決問題。 – mcchu

+0

@mcchu。你是對的。它增加了高度,它工作。爲什麼標籤可以工作呢?但矩形不。矩形應該包含標籤。 QT中的錯誤? – Nulik

+0

由於默認情況下Rectangle不[clip](http://doc.qt.io/qt-5/qml-qtquick-item.html#clip-prop)。如果將'clip:true'添加到該矩形(或其父項),則標籤也不會顯示。 – mcchu

回答

1

高度StackLayout缺失,因此Rectangle的默認高度爲0,這是不可見的。設置高度爲StackLayout可以解決問題:

StackLayout { 
    width: parent.width 
    height: parent.height 

    //... 
}