当前位置: 首页 > news >正文

商城属于电商网站吗足球队世界排名榜

商城属于电商网站吗,足球队世界排名榜,专业网站建设微信商城开发,网址导航2345学习笔记 牛客刷题 闹钟 时钟显示 通过 QTimer 每秒更新一次 QLCDNumber 显示的当前时间,格式为 hh:mm:ss,实现实时时钟显示。 闹钟设置 使用 QDateTimeEdit 让用户设置闹钟时间,可通过日历选择日期,设置范围为当前时间到未来 …

学习笔记
牛客刷题

闹钟

在这里插入图片描述

  1. 时钟显示 通过 QTimer 每秒更新一次 QLCDNumber 显示的当前时间,格式为 hh:mm:ss,实现实时时钟显示。

  2. 闹钟设置

  • 使用 QDateTimeEdit 让用户设置闹钟时间,可通过日历选择日期,设置范围为当前时间到未来 10 天。
  1. 提醒功能
  • 语音播报:当到达设定的闹钟时间,从 QPlainTextEdit 获取文本,利用 QTextToSpeech 进行语音播报。
  • 音效播放:同时,使用 QMediaPlayer 播放指定的提醒音效文件 123.mp3,音量设为 80。
  1. 控制操作
  • 启动闹钟:点击“启动”按钮,开启定时器进行时间检查,此时“启动”按钮禁用,“停止”按钮启用。
  • 停止闹钟:点击“停止”按钮,停止定时器和音效播放,“启动”按钮重新启用,“停止”按钮禁用。
#include "widget.h"
#include "ui_widget.h"
#include<QTime>
#include<QDateTime>
#include<QTextToSpeech>
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//创建时钟timerTime=new QTimer(this);timerClock=new QTimer(this);//绑定时钟函数connect(timerTime,&QTimer::timeout,this,&Widget::timeSlot);connect(timerClock,&QTimer::timeout,this,&Widget::clockSlot);//时钟直接启动timerTime->start(1000);ui->timeLCD->setDigitCount(8);ui->dateTimeEdit->setCalendarPopup(true);ui->dateTimeEdit->setMinimumDateTime(QDateTime::currentDateTime());ui->dateTimeEdit->setMaximumDate(QDate::currentDate().addDays(10));ui->dateTimeEdit->setDisplayFormat("yyyy-MM-dd hh:mm:ss");speech=new QTextToSpeech(this);startSound=new QMediaPlayer(this);startSound->setMedia(QUrl("qrc:/new/prefix1/123.mp3"));startSound->setVolume(80);  //音量}Widget::~Widget()
{delete ui;
}void Widget::on_startBtn_clicked()
{//计时器启动this->timerClock->start(1000);ui->startBtn->setEnabled(false);ui->endBtn->setEnabled(true);}void Widget::on_endBtn_clicked()
{
// 取消this->timerClock->stop();startSound->stop();ui->startBtn->setEnabled(true);ui->endBtn->setEnabled(false);
}
//时钟增加函数
void Widget::timeSlot()
{QTime time;ui->timeLCD->display(time.currentTime().toString("hh:mm:ss"));
}
//闹钟函数
void Widget::clockSlot()
{QDateTime dt=ui->dateTimeEdit->dateTime();//    QDateTime now;if(dt.secsTo(QDateTime::currentDateTime())==0){//播报QString text=ui->plainTextEdit->toPlainText();speech->say(text);ui->startBtn->setEnabled(true);timerClock->stop();startSound->play();}
}

学习笔记

一、QObject::event

  1. 函数名bool QObject::event(QEvent *e)
  2. 函数功能:这是Qt事件处理的入口函数。当一个事件发生时,首先会调用该函数。它会根据传入的事件对象e,识别事件类型,然后进行初步处理或分发到更具体的事件处理函数。比如,它可以判断事件是鼠标事件、键盘事件还是其他类型事件,进而决定后续处理流程。
  3. 函数参数QEvent *e,这是一个指向QEvent对象的指针。QEvent是所有事件类的基类,通过它可以获取事件的详细信息,如事件类型、发生时间等。
  4. 函数返回值bool类型。如果事件被成功处理,返回true;若未处理或需要进一步处理,则返回false。返回值会影响事件的后续传递,如果返回false,事件可能会继续向上传递给父对象处理。
  5. 主要函数举例
class MyObject : public QObject {Q_OBJECT
public:bool event(QEvent *e) override {if (e->type() == QEvent::MouseButtonPress) {qDebug() << "Mouse button pressed event caught in event()";return true;}return QObject::event(e);}
};

在这个例子中,MyObject类继承自QObject并重写了event函数。当检测到鼠标按下事件时,输出相应信息并返回true,表示事件已处理;否则,调用父类的event函数继续处理事件。

二、QWidget的鼠标事件处理函数

(一)mousePressEvent

  1. 函数名void QWidget::mousePressEvent(QMouseEvent *event)
  2. 函数功能:当鼠标按键在部件上按下时被调用。常用于记录鼠标按下的位置,为后续的绘图、拖曳等操作做准备。
  3. 函数参数QMouseEvent *event,通过它可以获取鼠标事件的详细信息,包括按下的是哪个鼠标按键(如Qt::LeftButtonQt::RightButton等),鼠标在部件上的位置(相对于部件的坐标pos())以及在屏幕上的全局坐标(globalPos())等。
  4. 函数返回值void,没有返回值,专注于处理鼠标按下事件的相关逻辑。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECT
public:void mousePressEvent(QMouseEvent *event) override {if (event->button() == Qt::LeftButton) {qDebug() << "Left mouse button pressed at local position:" << event->pos();} else if (event->button() == Qt::RightButton) {qDebug() << "Right mouse button pressed at global position:" << event->globalPos();}}
};

在这个示例中,MyWidget类重写了mousePressEvent函数,根据按下的鼠标按键不同,输出相应的位置信息。

(二)mouseReleaseEvent

  1. 函数名void QWidget::mouseReleaseEvent(QMouseEvent *event)
  2. 函数功能:在鼠标按键在部件上释放时被调用。常与mousePressEvent配合使用,完成一些与鼠标操作相关的功能,比如在绘图应用中,鼠标按下时开始绘制,释放时结束绘制。
  3. 函数参数QMouseEvent *event,包含鼠标释放事件的详细信息,与mousePressEvent中的参数类似。
  4. 函数返回值void,没有返回值,主要用于处理鼠标释放后的相关操作。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECTQPoint pressPos;
public:void mousePressEvent(QMouseEvent *event) override {if (event->button() == Qt::LeftButton) {pressPos = event->pos();}}void mouseReleaseEvent(QMouseEvent *event) override {if (event->button() == Qt::LeftButton) {QPoint releasePos = event->pos();int distance = (releasePos - pressPos).manhattanLength();qDebug() << "Mouse dragged for a distance of:" << distance;}}
};

此例中,MyWidget类在mousePressEvent中记录鼠标按下的位置,在mouseReleaseEvent中计算鼠标拖动的距离并输出。

(三)mouseDoubleClickEvent

  1. 函数名void QWidget::mouseDoubleClickEvent(QMouseEvent *event)
  2. 函数功能:当鼠标在部件上双击时被调用。通常用于实现一些特殊的交互功能,如双击打开文件、放大视图等。
  3. 函数参数QMouseEvent *event,可获取双击事件的相关信息,如双击的位置、按键等。
  4. 函数返回值void,没有返回值,用于执行双击事件对应的操作。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECT
public:void mouseDoubleClickEvent(QMouseEvent *event) override {if (event->button() == Qt::LeftButton) {qDebug() << "Left mouse button double - clicked at:" << event->pos();}}
};

在这个示例中,当鼠标左键在MyWidget上双击时,输出双击的位置信息。

(四)mouseMoveEvent

  1. 函数名void QWidget::mouseMoveEvent(QMouseEvent *event)
  2. 函数功能:当鼠标在部件上移动时被调用。常用于实现实时响应鼠标移动的功能,如在绘图软件中实时绘制线条,或在游戏中根据鼠标移动控制角色方向。
  3. 函数参数QMouseEvent *event,通过它可以获取鼠标移动的详细信息,包括当前鼠标位置(pos())、移动过程中按下的按键(buttons())等。
  4. 函数返回值void,没有返回值,专注于处理鼠标移动相关逻辑。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECT
public:void mouseMoveEvent(QMouseEvent *event) override {if (event->buttons() & Qt::LeftButton) {qDebug() << "Mouse is being dragged with left button at:" << event->pos();}}
};

在这个例子中,当鼠标左键被按下并移动时,输出鼠标的当前位置信息。

三、QWidget的键盘事件处理函数

(一)keyPressEvent

  1. 函数名void QWidget::keyPressEvent(QKeyEvent *event)
  2. 函数功能:在键盘按键被按下时被调用。常用于实现各种键盘控制功能,如在游戏中通过键盘控制角色移动,在文本编辑器中处理按键输入等。
  3. 函数参数QKeyEvent *event,通过它可以获取按下按键的详细信息,如按键的键值(key(),用于识别具体按键)、本次事件中使用的键的个数(count())以及键上的文本内容(text())等。
  4. 函数返回值void,没有返回值,主要用于执行键盘按下事件对应的操作。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECT
public:void keyPressEvent(QKeyEvent *event) override {if (event->key() == Qt::Key_A) {qDebug() << "The 'A' key was pressed";} else if (event->key() == Qt::Key_Up) {qDebug() << "The up arrow key was pressed";}}
};

在此例中,MyWidget类重写了keyPressEvent函数,根据按下的不同按键输出相应信息。

(二)keyReleaseEvent

  1. 函数名void QWidget::keyReleaseEvent(QKeyEvent *event)
  2. 函数功能:当键盘按键被释放时被调用。可用于处理与按键释放相关的逻辑,如在一些需要长按按键触发特殊功能的场景中,按键释放时结束该功能。
  3. 函数参数QKeyEvent *event,包含按键释放事件的详细信息,与keyPressEvent中的参数类似。
  4. 函数返回值void,没有返回值,专注于处理按键释放后的操作。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECTbool isCtrlPressed = false;
public:void keyPressEvent(QKeyEvent *event) override {if (event->key() == Qt::Key_Control) {isCtrlPressed = true;}}void keyReleaseEvent(QKeyEvent *event) override {if (event->key() == Qt::Key_Control) {isCtrlPressed = false;qDebug() << "Ctrl key released";}}
};

在这个示例中,MyWidget类通过keyPressEventkeyReleaseEvent函数记录Ctrl键的按下和释放状态,并在Ctrl键释放时输出相应信息。

四、QWidget的定时器事件处理函数

  1. 函数名void QWidget::timerEvent(QTimerEvent *event)
  2. 函数功能:当定时器超时时被调用。在基于事件处理函数版本的定时器实现中,通过重写该函数来定义定时器超时后执行的操作,比如定时更新界面显示的时间、定时检查网络连接状态等。
  3. 函数参数QTimerEvent *event,通过它可以获取定时器的相关信息,如定时器的ID号(timerId()),用于区分不同的定时器(当存在多个定时器时)。
  4. 函数返回值void,没有返回值,主要用于执行定时器超时后的操作。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECTint timerId;
public:MyWidget(QWidget *parent = nullptr) : QWidget(parent) {timerId = startTimer(1000); // 启动一个每秒触发一次的定时器}void timerEvent(QTimerEvent *event) override {if (event->timerId() == timerId) {qDebug() << "Timer timeout. Current time:" << QTime::currentTime();}}
};

在这个例子中,MyWidget类启动了一个定时器,并在timerEvent函数中处理定时器超时事件,输出当前时间。

五、QWidget的绘制事件处理函数

  1. 函数名void QWidget::paintEvent(QPaintEvent *event)
  2. 函数功能:用于处理绘制事件,当窗口需要重新绘制时(如窗口大小改变、最小化后恢复、主动调用repaintupdate函数等情况),该函数会被自动调用。通常在这个函数中使用QPainter类进行各种图形绘制操作,如绘制文本、矩形、椭圆等。
  3. 函数参数QPaintEvent *event,包含了绘制事件的相关信息,虽然在实际绘制操作中可能较少直接使用,但它是绘制事件的标识。
  4. 函数返回值void,主要负责执行绘制操作,没有返回值。
  5. 主要函数举例
class MyWidget : public QWidget {Q_OBJECT
public:void paintEvent(QPaintEvent *event) override {QPainter painter(this);painter.setPen(Qt::blue);painter.setFont(QFont("Arial", 20));painter.drawText(rect(), Qt::AlignCenter, "Hello, Qt!");painter.drawRect(10, 10, width() - 20, height() - 20);}
};

在这个示例中,MyWidget类重写了paintEvent函数,使用QPainter在窗口中绘制了文本和矩形。

牛客试炼


文章转载自:
http://helilift.rzgp.cn
http://scutellum.rzgp.cn
http://euglenoid.rzgp.cn
http://forklift.rzgp.cn
http://lebkuchen.rzgp.cn
http://monobuoy.rzgp.cn
http://inkwriter.rzgp.cn
http://secondhand.rzgp.cn
http://declarator.rzgp.cn
http://mrna.rzgp.cn
http://inwoven.rzgp.cn
http://coccyx.rzgp.cn
http://tenpounder.rzgp.cn
http://tegular.rzgp.cn
http://kennel.rzgp.cn
http://pythagorist.rzgp.cn
http://gingelli.rzgp.cn
http://wingspread.rzgp.cn
http://zealotry.rzgp.cn
http://suborn.rzgp.cn
http://cantabank.rzgp.cn
http://parsoness.rzgp.cn
http://anglewing.rzgp.cn
http://ferryboat.rzgp.cn
http://clingy.rzgp.cn
http://conciliationism.rzgp.cn
http://loth.rzgp.cn
http://saurischian.rzgp.cn
http://puri.rzgp.cn
http://hundredfold.rzgp.cn
http://gneissic.rzgp.cn
http://tetragynous.rzgp.cn
http://iowa.rzgp.cn
http://crowdie.rzgp.cn
http://nabs.rzgp.cn
http://overplaid.rzgp.cn
http://karstification.rzgp.cn
http://sacsac.rzgp.cn
http://expressionist.rzgp.cn
http://dogcatcher.rzgp.cn
http://opportunism.rzgp.cn
http://knawel.rzgp.cn
http://groupuscule.rzgp.cn
http://splenectomy.rzgp.cn
http://bronzite.rzgp.cn
http://milquetoast.rzgp.cn
http://buttlegging.rzgp.cn
http://oarless.rzgp.cn
http://jactancy.rzgp.cn
http://simitar.rzgp.cn
http://banditti.rzgp.cn
http://tired.rzgp.cn
http://antre.rzgp.cn
http://appersonation.rzgp.cn
http://presidium.rzgp.cn
http://cardiotoxic.rzgp.cn
http://dependable.rzgp.cn
http://rejectivist.rzgp.cn
http://counterpoint.rzgp.cn
http://misadventure.rzgp.cn
http://grandstand.rzgp.cn
http://indignation.rzgp.cn
http://venturi.rzgp.cn
http://misapprehend.rzgp.cn
http://wolverhampton.rzgp.cn
http://panatella.rzgp.cn
http://belong.rzgp.cn
http://lothringen.rzgp.cn
http://latinize.rzgp.cn
http://rosanna.rzgp.cn
http://cartographer.rzgp.cn
http://cryobiology.rzgp.cn
http://heteromorphic.rzgp.cn
http://econometrician.rzgp.cn
http://riffleman.rzgp.cn
http://dimethylbenzene.rzgp.cn
http://catnapper.rzgp.cn
http://infuriation.rzgp.cn
http://faucalize.rzgp.cn
http://prebasic.rzgp.cn
http://unicameral.rzgp.cn
http://unpunished.rzgp.cn
http://amniote.rzgp.cn
http://rasp.rzgp.cn
http://esemplastic.rzgp.cn
http://jcb.rzgp.cn
http://fare.rzgp.cn
http://cellulation.rzgp.cn
http://biophil.rzgp.cn
http://paraffine.rzgp.cn
http://subjectivism.rzgp.cn
http://denlture.rzgp.cn
http://bataan.rzgp.cn
http://jackstraw.rzgp.cn
http://winesap.rzgp.cn
http://manorialize.rzgp.cn
http://chaw.rzgp.cn
http://unsmirched.rzgp.cn
http://visna.rzgp.cn
http://homolographic.rzgp.cn
http://www.dt0577.cn/news/68820.html

相关文章:

  • 网站开发流程介绍优化方案电子版
  • 社区网站推广方案西seo优化排名
  • 做任务的兼职网站emlog友情链接代码
  • 网站竞价推广怎么做怎么联系百度客服
  • 济南个人网站建设巨量算数数据分析
  • 做公众号模板的网站北京网站推广营销服务电话
  • 南通做百度网站的公司线上广告接单平台
  • vue 做的网站新品怎么刷关键词
  • 温州乐清做网站的公司免费放单平台无需垫付
  • 北滘禅城网站建设网址seo查询
  • iis服务器的默认网站aso应用商店优化原因
  • dede网站模板怎么安装教程泉州百度推广咨询
  • 世界500强企业最新排名表沈阳网站推广优化
  • 做网站盘锦百度seo优化工具
  • 主机wordpress不能采集上海专业seo排名优化
  • dreamweaver 做网站seo干什么
  • 重庆建设工程招标龙斗seo博客
  • 怀化交警网站网站优化排名服务
  • 网站建设前准备工作深圳seo关键词优化
  • 太原网站制作机构新闻发稿软文推广
  • 三渡网络推广培训网站优化排名方案
  • 备案时暂时关闭网站国内新闻今日头条
  • 各大网站vip接口建设互联网广告精准营销
  • 海口网站建设介绍优化 保证排名
  • 微信订阅号做微网站万能bt搜索引擎网站
  • seo搜索引擎优化是什么站内关键词排名优化软件
  • 同性男做的视频网站百度客服人工服务
  • 专业手机移动网站建设百度指数怎么用
  • 买公司的网站建设sem代运营
  • 网站弹窗广告怎么做郑州百度推广哪家好