QML中未显示矩形

时间:2016-12-24 20:37:44

标签: qt qml

在此QML示例中,未显示Rectangle。标签 Usuarios 会出现,但矩形本身不会出现。非常奇怪的行为,你能说出为什么会这样吗?您可以使用qmlscene测试此示例。

示例代码:

主档案:

$ 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"
    }
}

欢迎任何有关解决此问题的指示。

1 个答案:

答案 0 :(得分:1)

StackLayout的高度缺失,因此StackLayout { width: parent.width height: parent.height //... } 的默认高度为0,这是不可见的。将高度设置为AggressionExpression可以解决问题:

and(new AggregationExpression() {
    @Override
    public DBObject toDbObject(AggregationOperationContext context) {
        return new BasicDBObject("$setIsSubset",
                Arrays.<Object> asList(
                        Arrays.<Object> asList("584e6253e17ed10f0a8cba1d",
                                "583e9719e17e8c1bf80da2fe"),
                        "$registered_users.user_id"));
    }
}).as("is_registered"));