Qt实现桌面悬浮球/不规则窗体
来源:互联网 发布:tpo mac 编辑:程序博客网 时间:2024/04/28 07:02
第一步:去掉窗口标题栏
构造函数
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)改为
Widget::Widget(QWidget *parent) :
QWidget(parent, Qt::FramelessWindowHint),
ui(new Ui::Widget)
第二步:窗体透明
(构造函数内添加)
this->setAttribute(Qt::WA_TranslucentBackground, true);
第三步:绘制显示窗体
需要包含
#include <QPixmap>
1,在界面里添加一个QLabel
2,创建一个QPixmap,并绘制要显示的窗口图形或者直接加载背景图片。
QPixmap *pixw;
pixw = new QPixmap(ui->label->size());
pixw->fill(QColor(255,0,0,150));
ui->label->setPixmap(*pixw);3,QPixmap加载到label显示。
第四步:鼠标功能
需要包含
#include <QMouseEvent>
#include <QPoint>
1鼠标拖动
鼠标按下记录相对位置
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button()==Qt::LeftButton){
relativePos = this->pos()- event->globalPos();
}
}鼠标移动,移动窗体
void Widget::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos() + relativePos);
}
完整程序
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent, Qt::FramelessWindowHint),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_TranslucentBackground, true);
QPixmap *pixw;
pixw = new QPixmap(ui->label->size());
pixw->fill(QColor(255,0,0,150));
ui->label->setPixmap(*pixw);
}
Widget::~Widget()
{
delete ui;
}
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button()==Qt::LeftButton){//左键拖动窗体
relativePos = this->pos()- event->globalPos();
}
if(event->button()==Qt::MidButton){//中键关闭窗体
this->close();
}
if(event->button()==Qt::RightButton){//右键打开网址或文件
QDesktopServices::openUrl(QUrl("file:///C:/windows", QUrl::TolerantMode));
// QDesktopServices::openUrl(QUrl("http://www.baidu.com"));
}
}
void Widget::mouseMoveEvent(QMouseEvent *event)//移动窗体
{
this->move(event->globalPos() + relativePos);
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMouseEvent>
#include <QPoint>
#include <QPixmap>
#include <QDesktopServices>
#include <QUrl>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
QPoint relativePos;
protected:
// void paintEvent(QPaintEvent*);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
};
#endif // WIDGET_H
界面内添加一个label即可
1 0
- Qt实现桌面悬浮球/不规则窗体
- QT实现不规则窗体
- QT实现不规则窗体
- QT实现不规则窗体
- QT实现不规则窗体
- Qt 不规则窗体的实现
- 【转】QT实现不规则窗体
- Qt不规则窗体的实现
- Qt不规则窗体的实现
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体和透明窗体
- QT实现不规则窗体和透明窗体
- VC++玩转炫酷悬浮窗3---GDI+完美实现不规则窗体
- [QT编程]QT实现不规则窗体和透明窗体
- Qt 不规则窗体
- QT 不规则窗体
- Qt 不规则窗体 <摘抄>
- Cas(5)-修改Cas Server的其它配置
- Github团队协作之Pull请求
- DOM操作(createElement()、createTextNode()、appendChild())
- Git 服务器搭建
- 使用apache的ab工具做压力测试
- Qt实现桌面悬浮球/不规则窗体
- Spark ML 基础:DataFrame、Dataset、feature
- hdu2092 整数解
- ARC和非ARC文件混编
- GStreamer基础教程02——GStreamer概念
- 使用nginx搭建https服务器
- Octave 线性代数 行列式 4
- Linux chattr/lsattr
- Java小程序:辗除法求两个正整数最大公约数和最小公倍数