2013-11-22 6 views
2

나는 왜 그런 일이 일어나고있는 지에 대해서는 전혀 모르겠지만 Z 순서는 완전히 엉망입니다. 여기 내 문제를 보여주는 최소한의 예입니다. 테스트 머신은 Windows 8 x64, Qt 5.1에서 실행됩니다.이상한 이미지 동작 (Qt Quick 2)

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; 

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 

Item { 
id: root; 

Rectangle { 
    anchors.fill: root; 
    color: Qt.rgba(.07, .07, .07, .95); 
} 
은 붉은 광장은 1.JPG의 중앙에 맞춰주십시오

하단의 75 픽셀 높이 선 그러나 광장은 보이지 않습니다.

하지만 배경 요소를 삭제해도 문제가 없습니다.

미리 도움을 주셔서 감사합니다.

답변

0

죄송합니다. 실행하지 못하고 확인해 드릴 수 없습니다. 그러나 실제로 코드를 읽으면 모든 것이 잘 보입니다. 물론 나는 뭔가를 간과 할 수있었습니다.

명시 적 z- 순서 지정을 사용하지 않으므로 모든 것이 맨 위 바닥에 있어야합니다. 사각형이 보이지 않으면 Z 축의 문제가되어서는 안됩니다. 사각형을 전혀 보지 않으면 다른 버그가 발생할 수 있습니다. 위치 또는 앵커가 잘못 계산 된 경우 yout rectangle은 적절한 Z로 끝날 수 있지만 Width = 0, Height = 0이 될 수 있습니다. 그러나 하드 코드 된 것처럼 오히려 불가능합니다.

또 다른 매우 중요한 것은 - 당신은 어디에서 효과를 관찰했는지 말하지 않았습니다. 실제 실행중인 앱이나 Qt 디자이너 또는 이와 유사한 도구에서이를 볼 수 있습니까? 여러 번 QtDesigner 이 실제로 제대로 작성되고 작동하는 화면의 렌더링을 망쳐 놓은 것을 보았습니다. 실제 응용 프로그램이 제공하는 내용을 확인하십시오.

btw. 그가 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로 설정합니다. 레이아웃이 작동하면. 이 설정에서 사각형이 보이지 않으면 다른 곳에서 실제로 엉망이됩니다.

+0

도움을 주셔서 감사합니다. 그것은 아무 것도 바뀌지 않았지만 문제를 해결했습니다. 불투명도에 문제가 있습니다. QQuickWindow의 [QuickWidget] (https://code.google.com/p/quickwidget/) 기반 래퍼에서 불투명도 (투명 배경)를 지원하는 버그 일 것입니다. 이 솔루션은 불투명 항목 – Sh1ne

+0

흠 ...을 원한다면 불투명도를 0.99로 설정하고 있습니다. 사실, 0.99 트릭으로 해결 된 불투명도와 관련된 일부 버그에 대해 읽은 적이 있습니다. 이는 Z 순서를 따라 덮어 쓰지 않고 모든 것을 "알파 블렌드"로 만듭니다. . 그러나 나는 이것이 사실이라고 생각하지 않을 것이다. IIRC, 당신이 실제로 무언가를 투명하게 보았을 때 그 버그가 나타나고, 당신의 언어가 보이지 않습니다. (hm, visible : false, imageItem, 어쩌면?). 어쨌든, 당신이 그것을 발견하게되어 반가워요. 짧은 답변을 작성하고 며칠 후 해결책으로 수락하십시오 (내 말은 대답을 의미 함), 스레드가 "해결 됨"으로 표시됩니다. – quetzalcoatl

+0

많은 요소가 투명하고 Image에 false로 설정되어 있습니다. GaussianBlur를 사용하고 있습니다. 하지만 그렇지 않습니다. 거짓으로 설정해도 모든 것이 엉망입니다. – Sh1ne