QT新手日记024 - QT001程序代码

QT001.H

#ifndef QT001_H

#define QT001_H

#include <QWidget>

class QT001 : public QWidget

{

Q_OBJECT

public:

QT001(QWidget *parent = nullptr);

~QT001();

void mousePressEvent(QMouseEvent *ev);

void mouseMoveEvent(QMouseEvent *ev);

bool event(QEvent *ev);

signals:

void MyMouseSinal(QPoint p);

void MyWheel(int w);

};

#endif // QT001_H

QT001.cpp

#include "qt001.h"

#include<QIcon>

#include<QMouseEvent>

#include<QWidget>

#include<QDebug>

#include<QLabel>

#include<QAction>

#include<QStyleFactory>

QT001::QT001(QWidget *parent)

: QWidget(parent)

{

//对默认生成的空白窗口进行简单设置

//绑定了标题改变信号

connect(this,&QT001::windowTitleChanged ,this,[=](){

qDebug() <<"修改了标题内容";

});

//改变当前窗口的尺寸

this->resize(1080,600);

//设定标题内容

this->setWindowTitle("欢迎使用QT开发程序!");

//设定窗口大小,通常在所有的界面控件布局完毕以后进行。

//创建一个标签

QLabel * lb = new QLabel("",this);

//改变标签位置

lb->move(10,10);

//改变标签尺寸

lb->resize(this->width()-20,60);

//设置标签内文本对齐方式

lb->setAlignment(Qt::AlignCenter | Qt::AlignHCenter);

//修改标签字体与大小

lb->setFont(QFont("黑体",30));

//设置标签显示文本内容

lb->setText("欢迎光临QT程序设计演示!");

//通过CSS格式给标签添加边框,黑色,实线,1像素

lb->setStyleSheet("QLabel { border: 1px solid black; }");

//关联自定义的信号(鼠标滚轮转动)用鼠标轮动来改变标准上下位置

connect(this,&QT001::MyWheel,this,[=](int w)

{

int ww=lb->y()-w/2;

if(ww<0)

ww=0;

else if(ww>this->height()-lb->height())

ww=this->height()-lb->height();

lb->move(lb->x(),ww);

});

//让鼠标事件对标签透明

lb->setAttribute(Qt::WA_TransparentForMouseEvents,true);//55

//定义一个新标签

QLabel * la = new QLabel("(0,0)",this);

//改变标签尺寸

la->resize(200,40);

//设定标签内容对齐方式

la->setAlignment(Qt::AlignCenter | Qt::AlignRight);

//设置标签对鼠标事件透明

la->setAttribute(Qt::WA_MouseTracking,true);

//设置标签位置

la->move(this->width()-la->width(), this->height()-la->height());

//关联自定义信号,用来设置鼠标位置到标签上。

connect(this,&QT001::MyMouseSinal,this,[=](QPoint p){

QString str=QString("(%1,%2)").arg(p.x()).arg(p.y());

la->setText(str);

});

//设定窗口任务栏图标

this->setWindowIcon(QIcon(":/RES/Logo001.ico"));

//改变窗口位置为屏幕中心

this->move((1920-this->width())/2,(1080-this->height())/2);

//使得一启动就开始处理鼠标事件捕捉

setMouseTracking(true);

}

void QT001::mousePressEvent(QMouseEvent *ev)

{

//鼠标按键操作事件捕捉

qDebug()<< ev->type()<<":"<<ev->button();

if(ev->button()==Qt::LeftButton)

{

this->setToolTip("单击过左键!");

}

else if(ev->button()==Qt::RightButton)

{

this->setToolTip("单击过右键!");

}

}

bool QT001 :: event(QEvent *ev)

{

//qDebug()<< ev->type();//type()取得事件类型

if(ev->type()==QEvent::Wheel)

{

//鼠标滚轮转动事件为QWheelEvent事件

QWheelEvent * qw=static_cast<QWheelEvent *>(ev);

qDebug()<<qw->delta();

//将滚动值通过自定义信号发出去。

emit MyWheel(qw->delta());//得到滚动一个刻度的值,一般是+/-120,正为向上,-为向下

return true;

}

//其他事件由父类去执行。

return QWidget::event(ev);

}

void QT001::mouseMoveEvent(QMouseEvent *ev)

{

//鼠标移位置捕捉

//qDebug()<<"("<< ev->x()<<","<<ev->y()<<")";

//当鼠标移动时,将移动的坐标通过信号发出去。

emit MyMouseSinal(ev->pos());

}

QT001::~QT001()

{

//析构函数

}

相关推荐
航Hang*1 分钟前
VMware vSphere 云平台运维与管理基础——第5章:VMware vSphere 5.5 高级特性
运维·服务器·开发语言·windows·学习·虚拟化
kaico20186 分钟前
python操作数据库
开发语言·数据库·python
zhangzeyuaaa7 分钟前
Python变量的四种作用域
开发语言·python
范纹杉想快点毕业7 分钟前
C语言全能实战教程
c语言·开发语言
大空大地202626 分钟前
程序调试与异常处理
开发语言
二等饼干~za89866831 分钟前
源码可控:云罗 GEO 源头工厂,开源搭建 + 二次开发全链路解决方案
服务器·开发语言·开源·php·音视频·ai-native
维度攻城狮44 分钟前
pycallgraph2drawio:Python 调用链可视化 + Draw.io 自由编辑
开发语言·python·draw.io·graphviz
蒙奇·D·路飞-1 小时前
大模型时代下 Java 后端开发的技术重构与工程实践
java·开发语言·重构
wljy11 小时前
Qt入门(一)
开发语言·qt
火山上的企鹅1 小时前
QT/QGroundControl 实战:Mission Planner 航线在 QGC 中出现 Takeoff 落到 (0,0) 的排查与修复
qt·mp·qgc·无人机开发