2013-02-08 55 views
8

मैं एक निर्बाध खिड़की और गोलाकार कोनों के साथ एक साधारण क्यूटी यूआई बनाने की कोशिश कर रहा हूं।क्यूटी 5 और क्यूटीक्विक 2 - पारदर्शी मुख्य विंडो

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(); 
     } 
    } 
} 

और यह: QtQuick 2 आवेदन टेम्पलेट के साथ एक नई परियोजना से शुरू, मेरे कोड इस तरह दिखता है परिणाम:

And this is the result

जो मैं नहीं करना चाहता वह मुख्य खिड़की पारदर्शी बनाकर सफेद कोनों से छुटकारा पाता है। हालांकि, जहां तक ​​मैं कह सकता हूं कि ऐसा करने के लिए Qt5 में कोई रास्ता नहीं है, क्योंकि हमारे पास स्टाइलशीट नहीं है, आदि और मैं QtWidget का उपयोग नहीं कर रहा हूं। क्या मुझे एक QtWidget का उपयोग करना चाहिए?

बीटीडब्ल्यू, मैं क्यूटी और क्यूटी 5 के लिए नया हूं।

+0

ऐसा लगता है कि यह 'QWidget :: createWindowContainer() 'का उपयोग कर एक कंटेनर विंडो के रूप में विजेट बनाकर 5.1 में हल किया जा सकता है। [बग रिपोर्ट] देखें (https://bugreports.qt-project.org/browse/QTBUG-25643) और [प्रतिबद्ध] (https://codereview.qt-project.org/#change,44285)। मैं स्रोत से 5.1 संकलित करने और संकलित करने जा रहा हूं और देख रहा हूं कि मैं इसे काम कर सकता हूं या नहीं। – andrewrjones

+0

चलिए हम जानते हैं कि –

+0

@andrewrjones आप अपने प्रश्न का उत्तर और स्वीकार कर सकते हैं। –

उत्तर

4

इस अंड मेरे लिए काम करता एर विंडोज 8 और उबंटू 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

धन्यवाद मार्कस! बिल्कुल यही बात है। मैक पर, मुझे बस विंडो में 'दृश्यमान: सत्य' और आयत में 'त्रिज्या: 10' जोड़ना पड़ा, और मुझे वही मिला जो मैं चाहता था। इसे गिटहब के लिए एक उदाहरण प्रोजेक्ट के रूप में अपलोड किया गया: https://github.com/andrewrjones/qt-transparent-main-window – andrewrjones

+0

उत्कृष्ट, खुशी हुई कि यह काम कर रहा है। :) और आपके रेपो में मुझे उल्लेख करने के लिए धन्यवाद। –

-2

सेट पृष्ठभूमि स्पष्ट रंग आपके आवेदन दर्शक पर 0 के एक अल्फा के लिए:

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

यह क्यूटी 5.0 के साथ काम नहीं करता है। आपको एक काला पृष्ठभूमि मिलती है, पारदर्शी नहीं। – nixeagle

-1

आपको क्यूटी विजेट है कि जहां आकर्षित करने के लिए और जहां qml प्रदर्शित करता है बताने के लिए में
viewer.setMask()
उपयोग करने के लिए नहीं ....

मैं ज्यादातर आयताकार मास्क का उपयोग किया है, लेकिन setMask एक QRegion जो मुझे लगता है कि समर्थन करता है और अधिक जटिल रूपों और यहां तक ​​कि बिटमैप मुखौटा स्वीकार करता है करने के लिए