我正在尝试使用无框窗口和圆角创建一个简单的Qt UI。从带有 QtQuick 2 Application 模板的新项目开始,我的代码如下所示:
的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();
}
}
}
这就是结果:
我不想做的是通过使主窗口透明来摆脱白色角落。但是,据我所知,在Qt5中没有办法做到这一点,因为我们没有样式表等,而且我没有使用QtWidget。我应该使用QtWidget吗?
不过,我是Qt和Qt5的新手。答案 0 :(得分:4)
这适用于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
}
}
答案 1 :(得分:0)
对于像我一样偶然发现此问题的任何人。对于C ++和Python,至少必须指定小部件属性WA_TranslucentBackground
才能使背景透明。
答案 2 :(得分:-1)
你必须使用
viewer.setMask()
来告诉qt小部件显示qml在哪里绘制以及不在哪里....
我主要使用矩形蒙版但是setMask接受了一个QRegion,我认为它支持更复杂的形式甚至是位图蒙版
答案 3 :(得分:-2)
将背景清晰颜色设置为在应用程序查看器上的alpha值为
viewer.setColor(QColor(0, 0, 0, 0));