我不知道为什么或如何发生,但Z秩序是完全混乱的。这是一个很小的例子,它显示了我的问题。测试机器运行在Windows8 x64,QT5.1上。
import QtQuick 2.0
Item {
id: root;
width: 800;
height: 800;
Background {
id: background;
anchors.fill: root;
imageSource: "backgrounds/1.jpg";
}
MainView {
id: mainView;
anchors.fill: root;
}
BottomBar {
id: bottomBar;
anchors.bottom: root.bottom;
anchors.left: root.left;
anchors.right: root.right;
height: 75;
}以下是背景:
import QtQuick 2.0
import QtGraphicalEffects 1.0
Item {
id: root;
property alias imageSource: imageItem.source;
Image {
id: imageItem;
anchors.fill: root;
fillMode: Image.PreserveAspectCrop;
visible: false;
}
GaussianBlur {
anchors.fill: root;
source: imageItem;
radius: 12;
samples: 12;
deviation: 5;
cached: true;
}
}MainView:
import QtQuick 2.0
Item {
id: root;
Rectangle {
anchors.centerIn: root;
width: 500;
height: 500;
color: "red";
}
}和BottomBar:
import QtQuick 2.0
Item {
id: root;
Rectangle {
anchors.fill: root;
color: Qt.rgba(.07, .07, .07, .95);
}应该是红色正方形在中间的1.jpg和75 it的高度线在它的底部,但广场是看不到的。
但是如果我删除背景元素,一切都很好。
谢谢你提前帮忙。
发布于 2013-11-23 11:11:51
对不起,但我不能运行它和检查。但是,实际上,当我阅读代码时,一切看起来都很好。我当然可以忽略一些东西。
您没有使用显式的z-排序,所以所有的东西都应该清楚地沿着顶部底部。如果你没有看到矩形,那么它不应该是一个Z轴的问题。根本看不到矩形可能是其他错误的结果。如果位置或锚被错误计算,yout矩形可能最终得到正确的Z,但Width=0,Height=0。但是,当你把它们硬编码的时候,这是不可能的。
另一件非常重要的事情是--你还没有说你在哪里观察到的效果。在实际运行的应用程序中,还是在Qt设计器或类似工具中,您都看到了吗?很多次我都见过QtDesigner 真的搞砸了--正确编写和工作的屏幕的呈现。一定要检查实时应用程序呈现的内容。
顺便说一句。你试过用QtInspector检查他的运行布局吗?它可能很快就会显示出矩形的位置。
编辑:哦-还有一件事。以防万一,试试这个:
MainView {
id: mainView;
anchors.fill: background;
}
BottomBar {
id: bottomBar;
anchors.bottom: mainView.bottom;
anchors.left: mainView.left;
anchors.right: mainView.right;
height: 75;
}我改变了锚,这样框架就可以清楚地排列了。它将布局依赖项设置为根<- Bkg <- MV <- BBar,而不是使它们都并行和独立。如果布局有效的话。如果在这个设置中没有看到矩形,那么在其他地方确实有一些东西被搞砸了。
https://stackoverflow.com/questions/20149171
复制相似问题