2013-02-08 91 views
8

我想創建一個無框窗口和圓角的簡單Qt UI。從與QtQuick 2應用模板創建一個新項目開始,我的代碼看起來是這樣的:Qt5&QtQuick2 - 透明主窗口

的main.cpp

#include <QtGui/QGuiApplication> 
#include "qtquick2applicationviewer.h" 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 

    QtQuick2ApplicationViewer viewer; 

    viewer.setMainQmlFile(QStringLiteral("qml/qtquick-test/main.qml")); 
    viewer.setFlags(Qt::FramelessWindowHint); 
    viewer.showExpanded(); 

    return app.exec(); 
} 

main.qml

import QtQuick 2.0 

Rectangle { 
    width: 360 
    height: 360 
    radius: 10 
    color: "red" 

    Text { 
     text: qsTr("Hello World") 
     anchors.centerIn: parent 
    } 
    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      Qt.quit(); 
     } 
    } 
} 

這是結果:

And this is the result

我想做的是擺脫白色的角落,通過使主窗口透明。但是,據我所知,Qt5沒有辦法做到這一點,因爲我們沒有樣式表等,我沒有使用QtWidget。我應該使用QtWidget嗎?

順便說一句,我是Qt和Qt5的新手。

+0

看起來這可能在5.1中通過使用'QWidget :: createWindowContainer()'創建一個容器窗口作爲容器窗口來解決。查看[bug報告](https://bugreports.qt-project.org/browse/QTBUG-25​​643)和[commit](https://codereview.qt-project.org/#change,44285)。我會嘗試從源代碼編譯5.1,看看我能否得到它的工作。 – andrewrjones 2013-02-08 23:50:55

+0

讓我們知道請 – 2013-07-18 08:49:47

+0

@andrewrjones你可以回答並接受你自己的問題。 – 2014-07-14 16:08:44

回答

4

這對我的作品UND呃Windows 8和Ubuntu 12.04。

import QtQuick 2.3 
import QtQuick.Window 2.2 

Window { 
    width: 300 
    height: 300 
    flags: Qt.FramelessWindowHint | Qt.Window 
    color: "transparent" 

    Rectangle { 
     color: "brown" 
     anchors.fill: parent 
     anchors.margins: 10 
    } 
} 
+0

謝謝Marcus!這是非常多的。在Mac上,我只需在窗口中添加'visible:true',並在矩形中添加'radius:10',我就可以得到我想要的。作爲示例項目上傳到GitHub:https://github.com/andrewrjones/qt-transparent-main-window – andrewrjones 2014-11-24 19:32:16

+0

非常好,很高興它解決了。 :)謝謝你在你的回購中提到我。 – 2014-11-24 21:46:15

-2

設置背景鮮明的色彩來對應用程序瀏覽器的0阿爾法:

viewer.setColor(QColor(0, 0, 0, 0)); 
+2

這不適用於Qt 5.0。你會得到一個黑色背景,而不是一個透明的背景。 – nixeagle 2013-08-22 22:39:47

-1

你必須爲了告訴大家,顯示QML在哪裏畫以及其中Qt物件使用
viewer.setMask()
不要....

我大部分採用矩形口罩,但setMask接受QRegion我認爲支持更復雜的形式,甚至圖蒙