Qt开源作品18-无边框背景透明窗体
2023-09-14 09:01:42 时间
一、前言
用Qt来做无边框北京透明窗体非常简单,根本不需要用什么系统层的API来实现透明什么的,Qt本身提供了很多种设置窗体透明的方法,除了可以设置窗体的属性为透明以外,还可以设置透明度函数,以及qss来设置透明度颜色等,方法很多,按照需要可以选用自己最合适的办法,如果想要整个窗体的背景图类似于无边框的异行,你只需要准备一张美工做好的png带透明的背景图即可,直接用qss的形式设置为窗体的背景图,你也可以用painter绘制上去,这样就可以产生各种奇形怪状的异行窗体,比如中间挖个洞的背景图,可以直接穿透桌面。
二、代码思路
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_TranslucentBackground);
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint);
ui->widget->installEventFilter(this);
ui->widget->setStyleSheet(QString("background-image:url(:/image/%1.png);").arg(1));
}
Widget::~Widget()
{
delete ui;
}
bool Widget::eventFilter(QObject *watched, QEvent *evt)
{
static int index = 1;
static QPoint mousePoint;
static bool mousePressed = false;
QMouseEvent *event = static_cast<QMouseEvent *>(evt);
if (event->type() == QEvent::MouseButtonPress) {
if (event->button() == Qt::LeftButton) {
mousePressed = true;
mousePoint = event->globalPos() - this->pos();
if (index == 5) {
index = 1;
} else {
index++;
}
ui->widget->setStyleSheet(QString("background-image:url(:/image/%1.png);").arg(index));
return true;
} else {
exit(0);
}
} else if (event->type() == QEvent::MouseButtonRelease) {
mousePressed = false;
return true;
} else if (event->type() == QEvent::MouseMove) {
if (mousePressed && (event->buttons() && Qt::LeftButton)) {
this->move(event->globalPos() - mousePoint);
return true;
}
}
return QWidget::eventFilter(watched, event);
}
三、效果图
四、开源主页
- 以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。
- 本开源项目已经成功升级到V2.0版本,分门别类,图文并茂,保你爽到爆。
- Qt开源武林秘籍开发经验,看完学完,20K起薪,没有找我!
相关文章
- Qt编译zlib完成文件压缩解压(Ubuntu18.04)
- 什么是QT?「建议收藏」
- Qt: 中文-常量中有换行符[通俗易懂]
- Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用
- C/C++ Qt 选择夹TabWidget组件应用
- Qt:击球游戏
- 一些Qt对话框类
- Qt运行程序弹出异常窗口解释
- Linux下Qt静态库编译与链接(linuxqt静态库)
- Qt迭代器(Java类型和STL类型)详解
- Linux安装Qt:轻松搞定(linux如何安装qt)
- 安装Linux系统,学习QT开发技术(linux安装qt教程)
- 在 Linux 上快速搭建 Qt 运行环境(qt运行环境linux)
- Qt操作MYSQL:只需几步就能实现(qt操作mysql)
- Linux上安装Qt绘图库的指南(linuxqt安装)
- Qt 静态编译在 Linux 的实践(qt静态编译linux)
- Linux下构建Qt程序步骤(linux打开qt)
- Linux下的Qt开发编程实践(linux版qt)
- 使用Qt在Linux上实现INI文件的管理(qtinilinux)
- Linux Qt 论坛:探索开源GUI开发的无限可能(linuxqt论坛)
- 崭新的体验——Qt在Linux的革新之旅(qtlinuxso)
- 使用QT操作MySQL数据库(qt的mysql数据库)
- 快速搭建Qt环境中的MySQL数据库(qt配置mysql数据库)
- 连接在 Qt 中使用 Redis 连接(qtredis)
- QT and MySQL: A Comprehensive Tutorial for Building Database Connections(qt连接mysql教程)
- Qt 5 与 MySQL 数据库联合使用:简单高效的开发实践(qt 5 mysql)
- 如何在Linux上运行QT程序?(linux运行qt程序)
- 轻松实现QT直连Microsoft SQL Server(qt直连mssql)
- QT开发MSSQL数据库技术实现(qt mssql)
- Linux下安装Qt操作指南(linux下怎么安装qt)
- Redis使用Qt解决读写互斥问题(redis读写互斥qt)