day03 1.Qt核心机制

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>            //定时器类
#include <QTime>            //时间类
#include <QTimerEvent>       //定时器事件类
#include <QDateTime>         //日期时间类
#include <QPushButton>
#include <QTextEdit>
#include <QLCDNumber>
#include <QLineEdit>
#include <QKeyEvent>          //键盘事件类
#include <QTextToSpeech>
#include <QPainter>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void mouseMoveEvent(QMouseEvent *event) override;
    void mousePressEvent(QMouseEvent *event) override;         //鼠标移动事件处理函数
signals:
    void btn1_signal();
    void btn2_signal();




public slots:
    void btn1_slots();
    void btn2_slots();

    void timeout_slot();  //自定义处理超时信号的槽函数

private:
    Ui::Widget *ui;
    QPoint temp;        //中间辅助向量

    QPushButton *btn1;
    QPushButton *btn2;
    QTextToSpeech *speecher;     //定义播报员指针
    QLCDNumber *lcdNumber;

    //定义一个定时器变
    QTimer t1;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    , btn1(new QPushButton(this))
    , btn2(new QPushButton(this))
    , lcdNumber(new QLCDNumber(this)) // 初始化 QLCDNumber
    , t1(new QTimer(this))
{
    ui->setupUi(this);

    this->setWindowFlag(Qt::FramelessWindowHint);   //去除控件的头部

    btn1 ->setParent(this);     //将自定义的界面当作按钮的父组件
    btn2 ->setParent(this);
    btn1 ->setText("启动");
    btn2 ->setText("取消");
    btn1 ->move(450,200);
    btn2 ->move(600,200);

    QTextEdit *textEdit = new QTextEdit(this);    //设置文本框
    textEdit->setPlaceholderText("请输入");        // 设置占位符文本
    textEdit ->setGeometry(50,250,700,300);      //设置位置和大小

    lcdNumber->setGeometry(50,50,300,150);

    QLineEdit *lineEdit = new QLineEdit(this);
    lineEdit ->setGeometry(450,50,300,100);

    //将按钮1绑定到对应的槽函数1上
    connect(this->btn1,&QPushButton::clicked,[this](){this->btn1_slots();});
    //将按钮2绑定到对应的槽函数2上
    connect(this->btn2,&QPushButton::clicked,[this](){this->btn2_slots();});

    connect(&t1, &QTimer::timeout, this, &Widget::timeout_slot);
}

Widget::~Widget()
{
    delete ui;
    delete lcdNumber; // 删除 QLCDNumber 实例
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    this->move(event->globalPos()-temp);
}

void Widget::mousePressEvent(QMouseEvent *event)
{
    temp = event->globalPos() - this->pos();
    if(event->button() == Qt::RightButton)
    {
        this->close();
    }
}

void Widget::btn1_slots()   //自定义槽函数的实现
{
    t1.start(1000);        //每隔指定的时间,发送一个timeout的信号
}

void Widget::btn2_slots()   //自定义槽函数的实现
{
    t1.stop();
}

void Widget::timeout_slot()
{
    //获取系统的时间
    QTime sysTime = QTime::currentTime();
    //将QTime类对象转变成字符串
    QString tm = sysTime.toString("hh:mm");
    //将时间展示到ui界面上
    this->lcdNumber->display(tm);

    if(sysTime.second()%2==0)
    {
        tm[2] = ':';
    }else
    {
        tm[2] = ' ';
    }


    this->lcdNumber->display(tm);


}
相关推荐
锦亦之22333 小时前
QT+OSG+OSG-earth如何在窗口显示一个地球
开发语言·qt
柳鲲鹏6 小时前
编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
开发语言·qt·mysql
三玖诶6 小时前
如何在 Qt 的 QListWidget 中逐行添加和显示数据
开发语言·qt
阳光开朗_大男孩儿12 小时前
DBUS属性原理
linux·服务器·前端·数据库·qt
Alphapeople14 小时前
Qt Modbus
开发语言·qt
竹林海中敲代码14 小时前
Qt Creator 集成开发环境 常见问题
qt·qt工具常见问题
竹林海中敲代码17 小时前
Qt安卓开发连接手机调试(红米K60为例)
android·qt·智能手机
长沙红胖子Qt18 小时前
关于 Qt运行加载内存较大崩溃添加扩大运行内存 的解决方法
开发语言·qt·qt扩大运行内存
gopher951118 小时前
qt相关面试题
开发语言·qt·面试
三玖诶1 天前
在 Qt 中使用 QLabel 设置 GIF 动态背景
开发语言·qt·命令模式