代码
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//开启鼠标追踪
this->setMouseTracking(true);
time1 = new QTimer(this); //一旦启动发射信号
connect(time1,&QTimer::timeout,this,&Widget::on_timeout);
}
Widget::~Widget()
{
delete ui;
}
//鼠标移动事件
void Widget::mouseMoveEvent(QMouseEvent *event)
{
//ui->la1->setText(QString("%1,%2").arg(event->x()).arg(event->y()));
//qDebug() << "鼠标移动";
}
//鼠标按下事件
void Widget::mousePressEvent(QMouseEvent *event)
{
if( Qt::LeftButton == event->button())
{
ui->la1->setText("鼠标左键被按下");
qDebug() << "鼠标左键被按下";
}
}
//鼠标松开事件
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << "鼠标左键松开";
}
//鼠标双击事件
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
qDebug() << "鼠标双击";
}
//会执事件的重写
void Widget::initPainter(QPainter *painter) const
{
static int num = 0;
qDebug() << num++;
}
//处理time_out
void Widget::on_timeout()
{
// static int count = 0;
// ui->l2->setNum(count++);
QTime t = QTime::currentTime();
QString t1 = t.toString("hh:mm:ss:zzz");
ui->l2->setText(t1);
}
//
void Widget::on_bton1_clicked()
{
qDebug() << "按钮被击";
if(ui->bton1->text() == "启动")
{
//执行启动功能
time1->start(100); //1秒后会自动发射一次信号
//将按钮文本内容改成关闭
ui->bton1->setText("关闭");
}else if(ui->bton1->text() == "关闭")
{
//执行关闭功能
time1->stop(); //停止一个定时器
//将按钮的文本内容改成启动
ui->bton1->setText("启动");
}
}
///
//点击按钮触发信号
void Widget::on_bton2_clicked()
{
if(ui->bton2->text() == "启动")
{
//启动时间
time_1 = this->startTimer(1000);
//将按钮文本内容改成关闭
ui->bton2->setText("关闭");
}else if(ui->bton2->text() == "关闭")
{
//启动时间
this->killTimer(time_1);
//将按钮文本内容改成启动
ui->bton2->setText("启动");
}
}
///
void Widget::timerEvent(QTimerEvent *event)
{
// static int count = 0;
// ui->l3->setNum(count++);
//获取系统日期事件
QDateTime sys_time = QDateTime::currentDateTime();
//将日期时间转变为字符串
QString daytime = sys_time.toString("yyyy:MM:dd hh:mm:ss");
//将事件展示到ui界面
ui->l3->setText(daytime);
}
运行效果如下: