8

我正在尝试创建一个带有无框窗口和圆角的简单 Qt UI。从使用QtQuick 2 应用程序模板的新项目开始,我的代码如下所示:

主文件

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

这是结果:

这就是结果

我不想做的是通过使主窗口透明来摆脱白色角落。但是,据我所知,Qt5 中没有办法做到这一点,因为我们没有样式表等,而且我没有使用 QtWidget。我应该使用 QtWidget 吗?

顺便说一句,我是 Qt 和 Qt5 的新手。

4

4 回答 4

5

这适用于我在 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
    }
}
于 2014-11-24T10:16:41.797 回答
0

对于像我一样偶然发现这么晚的人。至少对于 C++ 和 Python,您必须指定小部件属性WA_TranslucentBackground才能使背景透明。

于 2020-09-01T22:37:38.263 回答
-1

您必须使用
viewer.setMask()
它来告诉显示 qml 的 qt 小部件在哪里绘制以及在哪里不绘制......

我主要使用矩形掩码,但 setMask 接受 QRegion 我认为它支持更复杂的形式甚至位图掩码

于 2014-03-31T06:06:20.413 回答
-2

将背景清除颜色设置为在应用程序查看器上的 alpha 为 0:

viewer.setColor(QColor(0, 0, 0, 0));
于 2013-06-12T15:16:03.013 回答