资源简介
内容如标题,在QDialog上实现无边框,圆角,阴影,可拖拽大小,移动位置.
具体界面样式及实现细节参照我的同名博客文章.
代码片段和文件信息
#include “dialog.h“
#include “ui_dialog.h“
#include
#include
#include
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
ui(new Ui::Dialog)
{
ui->setupUi(this);
isLeftPressDown = false;
dir = NONE;
setMouseTracking(true);
setWindowFlags(Qt::framelessWindowHint);//---gtj 无边框
setAttribute(Qt::WA_TranslucentBackground);//---gtj 设置窗口透明
setSizeGripEnabled(true);//---gtj 右下角的小拖拽
//---------gtj 阴影效果
QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
effect->setOffset(44);//产生阴影效果方向,如果dx为负数
effect->setColor(QColor(00050));//阴影颜色
effect->setBlurRadius(10);//设定阴影的模糊度
ui->widgetBg->setGraphicsEffect(effect);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton) {
isLeftPressDown = false;
if(dir != NONE) {
this->releaseMouse();
this->setCursor(QCursor(Qt::ArrowCursor));
}
}
}
void Dialog::mousePressEvent(QMouseEvent *event)
{
switch(event->button()) {
case Qt::LeftButton:
isLeftPressDown = true;
if(dir != NONE) {
this->mouseGrabber();
} else {
dragPosition = event->globalPos() - this->frameGeometry().topLeft();
}
break;
case Qt::RightButton:
this->close();
break;
default:
QDialog::mousePressEvent(event);
}
}
void Dialog::mouseMoveEvent(QMouseEvent *event)
{
QPoint gloPoint = event->globalPos();
QRect rect = this->rect();
QPoint tl = mapToGlobal(rect.topLeft());
QPoint rb = mapToGlobal(rect.bottomRight());
if(!isLeftPressDown) {
this->region(gloPoint);
} else {
if(dir != NONE) {
QRect rMove(tl rb);
switch(dir) {
case LEFT:
if(rb.x() - gloPoint.x() <= this->minimumWidth())
rMove.setX(tl.x());
else
rMove.setX(gloPoint.x());
break;
case RIGHT:
rMove.setWidth(gloPoint.x() - tl.x());
break;
case UP:
if(rb.y() - gloPoint.y() <= this->minimumHeight())
rMove.setY(tl.y());
else
rMove.setY(gloPoint.y());
break;
case DOWN:
rMove.setHeight(gloPoint.y() - tl.y());
break;
case LEFTTOP:
if(rb.x() - gloPoint.x() <= this->minimumWidth())
rMove.setX(tl.x());
else
rMove.setX(gloPoint.x());
if(rb.y() - gloPoint.y() <= this->minimumHeight())
rMove.setY(tl.y());
else
rMove.setY(gloPoint.y())
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11608 2018-08-20 10:43 ui_dialog.h
文件 123 2017-11-18 15:34 images\max.png
文件 130 2017-11-18 15:34 images\min.png
文件 168 2017-11-18 15:33 images\quit.png
文件 537 2017-11-18 20:38 images\sereach.png
文件 130046 2017-08-26 19:19 bg.jpg
文件 5769 2018-08-20 10:42 dialog.cpp
文件 915 2018-08-20 10:42 dialog.h
文件 11668 2018-08-20 10:43 dialog.ui
文件 234 2018-08-16 11:19 image.qrc
文件 448 2018-08-16 10:22 Ji_Gui_RoundRectDialog.pro
文件 179 2013-09-10 13:53 main.cpp
目录 0 2018-08-16 11:19 images
----------- --------- ---------- ----- ----
161825 13
- 上一篇:教学系统设计 复习重点 有它不愁!!
- 下一篇:CPU SPEC 2006
相关资源
- 我的界面(visual foxpro)源码
- 仿知乎界面小程序源代码
- 嵌入式图形界面MiniGUI的示例程序9例
- pb 实现仿BS界面 dw菜单 powerbuild
- vtk QT做的三维地质可视化系统2of2
- 保险公司管理系统(前台界面)
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- Unity3D登录界面工程
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- WEB系统界面设计模板(很漂亮)
- QT,JPEG解码源代码(已完成)
- 漂亮的系统登录界面
- 运动界面追踪问题 流体力学
- 汇编编程实现二进制和十六进制之间
- Qt 播放音频文件
- 仿126 网易 163 邮箱 界面
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- .NET WinForm 和 WPF 的UI界面库,收集整合
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- LabVIEW界面设计
评论
共有 条评论