最近饶有兴趣的研究了下qt,参考了很多的博客和论坛资料,实现了一个无边框、带阴影的窗体。
主体界面使用的是QT 5.3 Demo StocQt:
其实需要改动的点并不多:
1.main.cpp,原来例子中是一个宏,我拿了出来,添加了
-
view.setFlags(Qt::Window|Qt::FramelessWindowHint);//设置为无边框
-
-
view.setColor(QColor(Qt::transparent));//窗体设置为透明
-
-
view.rootContext()->setContextProperty("window",&view);//将窗口参数传入qml脚本,参数名可自定义
2.stockqt.qml,在主题窗口外层添加了一个阴影层,窗体添加阴影可参考:
-
Rectangle {//最底层透明图层
-
width: 1000;
-
height: 700;
-
color: "transparent"
-
-
property int listViewActive: 0
-
-
Item {//主体窗口
-
id: container;
-
anchors.centerIn: parent;
-
width: parent.width;
-
height: parent.height;
-
Rectangle {
-
id: mainRect
-
width: container.width-(2*rectShadow.radius);
-
height: container.height - (2*rectShadow.radius);
-
anchors.centerIn: parent;
-
-
//以下省略
-
-
}
-
}
-
-
DropShadow {//绘制阴影
-
id: rectShadow;
-
anchors.fill: source
-
cached: true;
-
horizontalOffset: 0;
-
verticalOffset: 3;
-
radius: 8.0;
-
samples: 16;
-
color: "#80000000";
-
smooth: true;
-
source: container;
-
}
-
}
3.为
ListView添加间隔:
-
spacing:rectShadow.radius
4.从其他代码借鉴过来的最小化和关闭按钮:
-
Item {//最小化按钮、关闭按钮
-
anchors.right: banner.right
-
anchors.rightMargin: 60
-
SysBtnGroup
-
{
-
id: sysbtngrp
-
-
onMin: window.showMinimized()
-
onClose: window.close()
-
}
-
}
下面是完成的项目文件:
androidexam2.rar
阅读(9905) | 评论(0) | 转发(0) |