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

{

//析构函数

}

相关推荐
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner5 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz10 天前
QML Hello World 入门示例
qt
xcyxiner13 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner13 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner14 天前
DicomViewer (添加模型类)3
qt
xcyxiner14 天前
DicomViewer (目录调整) 2
qt
xcyxiner14 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00616 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术16 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript