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()

{

//析构函数

}

相关推荐
Scott9999HH2 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社3 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海3 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖4 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区6 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大7 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai7 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜7 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa7 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio