2011-10-19 2 views
3

사각형/화면의 투명도를 설정하는 방법.QML : 사각형의 투명도가 작동하지 않습니다.

// main.cpp 
void main(int argc, char*[] argv) 
{ 
    QApplication::setGraphicsSystem("raster"); 
    QApplication app(argc, argv); 

    QDeclerativeView view; 
    view.setSource(QUrl::fromLocalFile("loaderTest.qml")); 

    view.setResizeMode(QDeclarativeView::SizeRootObjectToView); 
    view.showFullScreen(); 

    //QRegion mask(10, 10, 100, 100); 
    //view.setMask(); 

    view.show(); 
    app.exec(); 
} 

그리고 QML 파일은 다음과 같습니다 :

나는 다음 코드가

//loaderTest.qml 
Rectangle 
{ 
    id: mainRectangle 
    width: 1000 
    height: 700 
    color: "transparent" 
    //color: "#00000000" 

    Image 
    { 
     id: image1; 
     width: 348; 
     height: 155; 
     anchors.horizontalCenter: parent.horizontalCenter; 
     anchors.verticalCenter: parent.verticalCenter; 
     source: "test.png" 
    } 

    Loader 
    { 
     id: mainLoader 
     anchors.fill: parent; 
     source: ""; 
     focus: true; 
    } 
} 

내가이 화면에서 하나 로더와 하나 개의 이미지를 가지고 배경색이 투명합니다. 이 응용 프로그램을 실행할 때 이미지가 중앙에있는 투명한 배경을 표시해야합니다 (로더 원본을 설정하지 않았으므로).

하지만 내가 얻는 것은 화면에 흰색 배경이 채워진 가운데에 이미지가 채워져 있는데, 나는이 투명 배경색을 배경으로 언급했기 때문에이 흰색 배경색을 누가 채우고 있는지 알지 못합니다.

QT.4.7.0 및 Linux를 사용 중입니다.

목표 평면에 두 개의 평면이 있습니다. 하나는 비디오 평면이고 다른 하나는 그래픽 평면입니다. 투명 배경 (비디오 위치에 투명도 설정)이있는 GUI를 실행하면 위의 예에서 비디오를 표시해야합니다. 흰색으로, 비디오 플레인에서 비디오 재생을 표시해야합니다.

답변

3

기본적으로 QDeclarativeView는 배경을 칠합니다. 아마도 그게 당신 문제 일 겁니다. http://doc.qt.nokia.com/4.7/qdeclarativeperformance.html

에서

는 QML, 예를 사용하여 응용 프로그램의 배경을 제공한다면 당신은 또한 창 배경 그림에서 QDeclarativeView을 방지 할 수 있습니다 당신은 단지 QPushButton을에 배경 색상을 설정하면 어떤 값으로 경계 속성을 설정하지 않는 한

QDeclarativeView window; 
window.setAttribute(Qt::WA_OpaquePaintEvent); 
window.setAttribute(Qt::WA_NoSystemBackground); 
window.viewport()->setAttribute(Qt::WA_OpaquePaintEvent); 
window.viewport()->setAttribute(Qt::WA_NoSystemBackground); 
0

내 첫 번째 추측은 배경이 흰색이고 사각형이 실제로 완전히 투명하다는 것입니다.

LoaderScreen은 어떤 유형입니까? 저는 일종의 QDecalarativeView라고 생각합니다. 기술 미스가 거의 1 년 동안 Qt/QML을 코딩하지 않았다고 용서하십시오. 내가 기억하는 것처럼보기의 기본 배경은 흰색이었고 어쨌든 어떤 종류의 투명성을 유지하기를 원하십니까?

+0

죄송합니다. QDecalarativeView입니다. 나는 그 질문을 편집했다. – kbalar

+0

예 LoaderScreen은 QDecalarativeView에서 파생되었으며 완전한 투명성이 필요합니다. - 칼라 발 – User7723337

0

, 배경이 나타나지 않을 수 있습니다. 이는 기본적으로 QPushButton이 배경색과 완전히 겹치는 기본 테두리를 그리기 때문입니다. QPushButton 주위에 검은 색 사각형 상자가 표시 될 수 있습니다. 특히 Linux 컴퓨터에서이 문제에 직면하게됩니다. 이를 피하기 위해 border 속성을 none으로 설정할 수 있습니다.

widget-> setStyleSheet ("border : none");

관련 문제