资源简介
QT 自定义无边框窗体,支持边缘拖拽缩放。搬运自http://www.cnblogs.com/xufeiyang/p/3313104.html,稍改了些代码,供参考
代码片段和文件信息
#include “dialog.h“
#include “ui_dialog.h“
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
ui(new Ui::Dialog)
{
ui->setupUi(this);
isLeftPressDown = false;
this->dir = NONE;
this->setMinimumHeight(100);
this->setMinimumWidth(150);
this->setWindowFlags(Qt::framelessWindowHint|Qt::WindowSystemMenuHint );
this->setMouseTracking(true);
this->setstyleSheet(“QDialog{background:url(:/bg_main.png)}“);
}
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());
break;
case RIGHTTOP:
rMove.setWidth(gloPoint.x() - tl.x());
if(rb.y() - gloPoint.y() <= this->minimumHeight())
rMove.setY(tl.y());
else
rMove.setY(gloPoint.y());
break;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1034026 2013-02-25 13:58 Sizablefr
文件 5724 2016-04-20 15:37 Sizablefr
文件 809 2013-09-10 16:57 Sizablefr
文件 441 2013-09-10 13:53 Sizablefr
文件 90 2013-09-10 13:54 Sizablefr
文件 179 2013-09-10 13:53 Sizablefr
文件 413 2016-04-20 10:33 Sizablefr
文件 34022 2016-04-20 16:49 Sizablefr
文件 17738 2013-09-10 13:57 Sizablefr
目录 0 2016-04-20 16:49 Sizablefr
----------- --------- ---------- ----- ----
1093442 10
- 上一篇:Qt5-嵌入百度地图
- 下一篇:Qt5使用百度地图test
相关资源
- Qt5使用百度地图test
- Qt5-嵌入百度地图
- 自定义Dialog的各种样式,包括自定义
- Qt-Charts动态显示多条折线电压值(实
- esp8266继电器配网+断电保存+可重复配
- mupdf-qt已编译库文件
- STM32F103+SIM800C 移植MQTT 连接阿里云服务
- QT5版简易网络调试助手附带编译好的
- 封装QTableView,支持冻结列,绘制表头
- Qt实现二维码扫描器
- Qt局域网聊天工具
- qt指纹采集测试程序
- Qt实现浏览器
- qt调用百度地图与js通信源码
- Qt调用百度地图APImap_APP.7z
- 指定形状滚动词云图(echart自定义形
- Cpp/Qt/Opencv 识别简单手势剪刀石头布
- 自定义生成后的jsonlint
- Qt加载HTML/js,实现相互调用的小程序
- QT简单的计时器程序
- libmodbus 在 Windows平台 Qt5 MinGW 中的测试
- QT5-电压电阻表盘源码可以自定义阴影
- QT-电压电阻表盘源码可以自定义阴影
-
arcgis ja
vasc ript自定义infowindow - qt写word两种方式代码
- QTableWidget分页代码
- QT编写的邮件发送工具
- Qt写的实用闹钟,可以自己选择音乐
- 使用html+css+js实现自定义弹出对话框
- 博客导出工具(支持sinacsdn自定义列表
评论
共有 条评论