当前位置: 首页> 房产> 家装 > 搜索引擎优化缩写_秦皇岛建设工程_搜索关键词怎么让排名靠前_广东seo快速排名

搜索引擎优化缩写_秦皇岛建设工程_搜索关键词怎么让排名靠前_广东seo快速排名

时间:2025/7/15 11:03:31来源:https://blog.csdn.net/qq_51349750/article/details/145571686 浏览次数:0次
搜索引擎优化缩写_秦皇岛建设工程_搜索关键词怎么让排名靠前_广东seo快速排名

作业

1>    制作一个闹钟软件

2>    使用绘制实现,实现时钟(君子作业)

//头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer>       //定时器类
#include <QDebug>
#include <QTime>        //时间类
#include <QTimerEvent>  //定时器事件类
#include <QDateTime>    //日期时间类
#include <QString>
#include <QtTextToSpeech/QTextToSpeech>
#include <QPaintEvent>      //绘制事件类
#include <QPainter>         //画家类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//重写自己的定时器事件处理函数void timerEvent(QTimerEvent *ev) override;//判断设定闹钟是否与时间相等bool clock();//重写绘制事件处理函数:但凡有窗口发生改变,该函数就会自动被调用void paintEvent(QPaintEvent *event) override;
signals:void clock_signal();private slots:void on_startBtn_clicked();//自定义闹钟槽函数void clock_slot();private:Ui::Widget *ui;//定义一个定时器的id号int eventTimerId;int clockId;// 创建QTextToSpeech对象QTextToSpeech * speecher;//时钟计数器double count = 0.0000000000;
};
#endif // WIDGET_H
//源文件
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置窗口透明度this->setWindowOpacity(0.95);// 设置取消按钮圆角ui->startBtn->setStyleSheet("QPushButton { background-color: rgb(144, 144, 144);border-radius:10px }");//给播报员指针实例化空间speecher = new QTextToSpeech(this);//启动一个定时器,每隔10毫秒,会自动调用timerEvent函数eventTimerId = this->startTimer(1);qDebug()<<eventTimerId;//使用QT5版本的链接函数,将ui界面上的按钮的信号链接到自定义的槽函数中QObject::connect(this,                       //信号的发射者指针&Widget::clock_signal,     //要发射的信号this,                      //信号的接收者指针&Widget::clock_slot);     //接收信号的槽函数
}Widget::~Widget()
{delete ui;
}//重写自己的定时器事件处理函数
void Widget::timerEvent(QTimerEvent *ev)
{//判断是那个定时器到位if(ev->timerId() == eventTimerId){//获取系统日期时间QDateTime sysDateTime = QDateTime::currentDateTime();//将日期时间转换为字符串QString dt = sysDateTime.toString("   yyyy-MM-dd\t\tddd\t\t\thh:mm:ss");ui->dateTimeLab->setText(dt);//校准数字时钟与图形时钟int hour = sysDateTime.time().hour();int min = sysDateTime.time().minute();int sec = sysDateTime.time().second();int msec = sysDateTime.time().msec();qDebug()<<hour<<min<<sec<<msec;count = (hour)*60*60*1000+(min)*60*1000+(sec)*1000+(msec);this->update();}if(ev->timerId() == clockId){static int flag = 0;if(clock() && (flag == 0)){clock_signal();flag = 1;}else if(!clock() && (flag == 1)){flag = 0;}}
}//判断设定闹钟是否与时间相等
bool Widget::clock()
{QTime sysTime = QTime::currentTime();QString time = sysTime.toString("hh:mm");QString clock = ui->timeEdit->text();qDebug()<<"现在的时间:"<<time<<",设定的闹钟为:"<<clock;return time == clock;
}//开始按钮对应的槽函数
void Widget::on_startBtn_clicked()
{//判断按钮上的文本内容if(ui->startBtn->text() == "开启闹钟"){//将按钮上的文本更改成“关闭闹钟”ui->startBtn->setText("关闭闹钟");clockId = this->startTimer(1000);qDebug()<<clockId;}else{//将按钮上的文本更改成“开启闹钟”ui->startBtn->setText("开启闹钟");//关闭定时器killTimer(clockId);}
}//自定义闹钟槽函数
void Widget::clock_slot()
{QTime sysTime = QTime::currentTime();QString time = sysTime.toString("现在是北京时间:hh点mm分");qDebug()<<time;// 要朗读的文本QString text = ui->textEdit->toPlainText();// 开始朗读speecher->say(time);speecher->say(text);
}//重写绘制事件处理函数
void Widget::paintEvent(QPaintEvent *event)
{//实例化一个画家QPainter painter(this);//实例化一个画笔QPen pen;               //无参构造pen.setColor(QColor("skyblue"));        //给画笔设置颜色pen.setStyle(Qt::DashDotLine);          //设置画笔样式pen.setWidth(10);                       //设置画笔的粗细//将画笔设置给画家painter.setPen(pen);//绘制一个矩形框painter.drawRect(10,10,this->width()-20,this->height()-20);//偏移画布的起始点painter.translate(400,850);//给画家设置字体painter.setFont(QFont("Palace Script MT",20));//在ui界面上绘制一个文本内容pen.setColor(QColor("black"));          //给画笔设置颜色painter.setPen(pen);                  //将画笔设置给画家painter.drawText(QPoint(190,15),"III");painter.drawText(QPoint(-30,280),"VI");painter.drawText(QPoint(-280,15),"IX");painter.drawText(QPoint(-50,-250),"XII");//绘制一个椭圆pen.setColor(QColor("skyblue"));        //给画笔设置颜色pen.setStyle(Qt::SolidLine);          //设置画笔样式pen.setWidth(10);                       //设置画笔的粗细painter.setPen(pen);                  //将画笔设置给画家painter.drawEllipse(QPoint(0,0),8,8);painter.drawEllipse(QPoint(0,0),300,300);//painter.rotate(180);           //旋转偏移画布//绘制刻度for(double i=0.0;i<=360;i+=30){pen.setColor(QColor("blue"));          //给画笔设置颜色pen.setStyle(Qt::SolidLine);          //设置画笔样式pen.setWidth(5);                      //设置画笔的粗细painter.setPen(pen);                  //将画笔设置给画家painter.drawLine(QPoint(0,288),QPoint(0,295));painter.drawLine(QPoint(148,256),QPoint(150,258));painter.drawLine(QPoint(254,146),QPoint(258,150));painter.rotate(i);           //旋转偏移画布}//绘制时针pen.setColor(QColor("black"));          //给画笔设置颜色pen.setWidth(16);                      //设置画笔的粗细painter.rotate((360.00/(12*60*60*1000))*count);           //旋转偏移画布painter.setPen(pen);                  //将画笔设置给画家painter.drawLine(QPoint(0,0),QPoint(0,140));painter.rotate(-(360.00/(12*60*60*1000))*count);           //旋转偏移画布//绘制分针pen.setColor(QColor("blue"));          //给画笔设置颜色pen.setWidth(8);                      //设置画笔的粗细painter.rotate(0.0001*count);           //旋转偏移画布painter.setPen(pen);                  //将画笔设置给画家painter.drawLine(QPoint(0,0),QPoint(0,200));painter.rotate(-0.0001*count);           //旋转偏移画布//绘制秒针pen.setColor(QColor("red"));          //给画笔设置颜色pen.setWidth(5);                      //设置画笔的粗细painter.rotate(0.006*count);           //旋转偏移画布painter.setPen(pen);                  //将画笔设置给画家painter.drawLine(QPoint(0,0),QPoint(0,240));painter.rotate(-0.006*count);           //旋转偏移画布}
//主函数
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

 3>    将网络聊天室服务器端,重新实现一遍

//头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpServer>       //服务器类
#include <QTcpSocket>       //客户端类
#include <QVector>          //动态数组类
#include <QMessageBox>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_startBtn_clicked();//自定义处理newConnection信号的槽函数void newConnect_slot();//自定义处理readyRead信号的槽函数void readyRead_slot();private:Ui::Widget *ui;//定义服务器指针QTcpServer *server;//定义客户端数组QVector<QTcpSocket*> client_vector;
};
#endif // WIDGET_H
//源代码
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化一个服务器对象server = new QTcpServer(this);//将服务器的newConnection信号链接到自定义的槽函数中connect(server,&QTcpServer::newConnection,this,&Widget::newConnect_slot);
}Widget::~Widget()
{delete ui;
}//启动服务器按钮对应的槽函数
void Widget::on_startBtn_clicked()
{//判断按钮上的文本内容if(ui->startBtn->text() == "启动服务器"){//启动服务器quint16 port = ui->portEdit->text().toUInt();//启动服务器//参数1:要监听的IP地址,允许哪些主机连接到当前服务器//      默认值是any,表示任意一个主机都可以链接服务器//参数2:提供的端口号,默认值为0//      表示其他主机可以通过任意端口号链接到当前服务器,一般具体指定//返回值:成功启动返回真,否则返回假if(server->listen(QHostAddress::Any,port)){QMessageBox::information(this,"提示","服务器打开成功");}else{QMessageBox::information(this,"提示","服务器打开失败");}//将按钮上的文本更改成“关闭服务器”ui->startBtn->setText("关闭服务器");//此时,服务器已经打开成功,如果有客户端发来连接请求//那么该服务器就会自动发射newConnection信号//我们可以将该信号链接到自定义的槽函数中执行相关的逻辑//一般将该链接写在构造函数中}else{//关闭服务器server->close();QMessageBox::information(this,"提示","服务器已关闭");//将按钮上的文本更改成“启动服务器”ui->startBtn->setText("启动服务器");}}//newConnection信号对应的槽函数
void Widget::newConnect_slot()
{//获取最新链接的客户端的套接字//参数:无//返回值:最新链接的客户端套接字地址QTcpSocket *s = server->nextPendingConnection();QString msg = "阿水服务器连接成功\n";s->write(msg.toLocal8Bit());qDebug()<<"客户端链接成功";//将客户端套接字放入到客户端容器中client_vector.push_back(s);//此时,就完成了一个服务器对应多个客户端了//若此时客户端有消息发送到服务器中,客户端就会自动发射一个readyRead信号//我们可以将该信号链接到自定义的槽函数中执行相关逻辑connect(s,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);
}//readyRead信号对应的槽函数
void Widget::readyRead_slot()
{//判断是哪个客户端发来的消息for(int i=0;i<client_vector.size();i++){//client_vector[i]:表示的是任意一个客户端//功能:返回当前客户端中待读取的字节数,如果字节数为0,表示没有数据可读if(client_vector[i]->bytesAvailable() != 0){//表示当前客户端有消息可读//将当前套接字中的消息读取下来QByteArray msg = client_vector[i]->readAll();//将QByteArray类型转换为QString类型QString msg_string = QString::fromLocal8Bit(msg);//将消息展示在ui界面上ui->msgWidget->addItem(msg_string);//将消息转发给所有客户端,无需转发给自己for(int j=0;j<client_vector.size();j++){if(i != j)        //屏蔽自己给自己发消息{client_vector[j]->write(msg);}}}}
}
//主函数
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

4>    思维导图

5>    牛客网上 两个 28

关键字:搜索引擎优化缩写_秦皇岛建设工程_搜索关键词怎么让排名靠前_广东seo快速排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: