QT每日一练day27:绘制不规则窗体
注:本文本来应该是以一个不规则的图片作为历程的,,忘记了!!!!
一.第一阶段:隐藏窗体框架
运行结果(GIF动图):
widget.cpp
二.第二阶段:将窗口设置为透明
运行结果(GIF动图):
widget.cpp
三.第三阶段:结合鼠标坐标
在隐藏窗体框架、将窗口设置为透明的基础之上,获取鼠标坐标向量。
step1:运行结果(GIF动图):
widget.cpp增添内容:
step2:添加鼠标右键QMenu,运行结果(GIF动图):
widget.h
widget.cpp
step3:step2的另一种更好的实现:
四:附代码
xiaowen_QT_day27.pro
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cppHEADERS += \widget.h# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QMenu>
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void paintEvent(QPaintEvent *event);void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);
private:QPoint _presspos;bool _leftButtonPressed;QMenu* _menu;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include<QPainter>
#include<QMouseEvent>
#include<QDebug>
#include<QMenu>
Widget::Widget(QWidget *parent): QWidget(parent)
{this->setWindowFlag(Qt::FramelessWindowHint);//隐藏窗体框架this->setAttribute(Qt::WA_TranslucentBackground);//将窗口设置为透明_menu=new QMenu("Menu",this);_menu->addAction("关闭",this,SLOT(close()));_menu->show();
}
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter;painter.begin(this);painter.drawPixmap(0,0,QPixmap("C:/Users/xiaowen/Desktop/千反田.jpg"));painter.end();
}void Widget::mousePressEvent(QMouseEvent *event)
{qDebug()<<event->pos()<<endl;if(event->button()==Qt::LeftButton){_presspos=event->pos();_leftButtonPressed=true;}else if(event->button()==Qt::RightButton){_leftButtonPressed=false;//_menu->move(this->cursor().pos());//获取光标的位置//_menu->show();_menu->exec(QCursor::pos());//cursor是光标的意思}else{}
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{qDebug()<<event->pos()<<endl;if(event->button()==Qt::LeftButton){this->move(pos()+(event->pos()-_presspos));}
}Widget::~Widget()
{}
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
注:new过的忘记delete了。。
QT每日一练day27:绘制不规则窗体相关推荐
- QT每日一练day4:ubuntu中使用QT
(本文主要是为了说明QT的跨平台特性) 一.安装QT sudo apt-get install qt5-default qtcreator cmake 二.打开QT 可以点击图标或命令行方式: 三 ...
- QT每日一练day1:第一个程序
参考博文:Qt常见类.窗口类继承关系树图 QT每日一练(1):第一个程序 最终效果(GIF动图): step1: step2: step3: step4: step5: step6: step7: s ...
- QT每日一练day26:绘制图片
一.第一阶段 发现上述图片没有显示全!!!!! 二.第二阶段 设置宽高比,平滑转换 运行结果(GIF动图): 发现上述图片在数次缩放后会产生失真!!!!! 三.第三阶段 为了避免图像缩放过程中产生失真 ...
- QT每日一练day24:绘画事件
一.第一阶段 设置线条粗细 二.第二阶段:设置笔的样式 如:虚线 三.第三阶段:绘制矩形 四.第四阶段:设置颜色 轮廓颜色 笔刷颜色 笔刷样式 五.第五阶段:绘制其他形状图像和文字 六.第六阶段:图像 ...
- QT每日一练day29:QT中的多线程探究
一.未使用多线程,则w0先运行完后,w1才开始运行 运行结果(GIF动图): main.cpp xiaowen_QT_day29.pro QT+=widgets SOURCES += \main.cp ...
- QT每日一练day25:触发绘画事件
运行结果(GIF动图): widget.cpp 附代码: xiaowen_QT_day25.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT ...
- QT每日一练day23:鼠标进入与离开事件
运行结果(GIF动图): xiaowen_QT_day23.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFI ...
- QT每日一练day22:键盘事件
一.第一阶段--键盘按键按下事件 运行结果(GIF动图): xiaowen_QT_day22.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): Q ...
- QT每日一练day21:鼠标事件
一.第一阶段--鼠标点击和释放事件 运行结果(GIF动图): MouseEvent.pro #------------------------------------------------- # # ...
最新文章
- 通用数组(练习,可能有错)
- C#中数据类型的安全转换(is,as)
- 茄子快传 java,GitHub - wuyxhero/KuaiChuan: 仿茄子快传的一款文件传输应用
- 【javascript】js处理字符串
- android 枚举类型比较大小写,Spring 3.0 MVC绑定枚举区分大小写
- javaScript学习笔记之运算符
- 【JavaScript吉光片羽】--- 滑动条
- 淘宝客程序 —— 突破了传统淘宝客程序对自动采集商品收费的模式
- MacOS系统自带截图快捷键
- 【转】简析 .NET Core 构成体系
- 震惊:selenium竟然不是自动化测试工具
- 常见Linux命令(非文件操作)
- 如何在映像更改后升级docker容器
- web前端网页设计作业_如何学习网页前端设计培训?
- mysql 数据导入导出说明
- 9张图带你了解全宇宙最神秘的团体——程序员
- iOS自动布局高级用法 纯代码约束写法
- 常用的开源3D游戏引擎(转)
- 【邮箱】Foxmail中如何登陆网易邮箱?
- 【编程语言】品诺试题
热门文章
- Hello Quartz (第三部分)
- 章节三、2-方法_演示实例
- 【GISER Painter】矢量切片(Vector tile)番外一:Proj4js
- this 的4种绑定机制
- SWIFT学习笔记01
- 条款5:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls)...
- 菜鸟学习Spring——60s配置XML方法实现简单AOP
- Oracle数据库时间修改
- 离线缓存之RNCachingURLProtocol解析
- cad布局打印出图-01-模型空间打印