#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
#include <QTextStream>
#include <QDebug>
#include <QTime>
#include <QTcpServer>
#include <QHostAddress>
#include <QSettings>
#include <QTextCodec>
QString Widget::g_sFontName="SimSun";
QString Widget::g_sFontSize="30";
QString Widget::g_sColor="255,0,0";
QString Widget::g_sSpeed="1";
QString Widget::g_sText=QStringLiteral("welcome");
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget),
m_pSocket(nullptr)
{
ui->setupUi(this);
initUi();
//1 读取配置文件 加载保存的指令
readSettings();
//2 初始化标签显示内容
updateData();
//3 左上角 右下角时间显示
QTimer* timer = new QTimer(this);
connect(timer, &QTimer::timeout,[=](){
QDate curDate = QDate::currentDate();
QString str1 = curDate.toString("yyyy/MM/dd");
QString str2 = QTime::currentTime().toString("hh:mm:ss");
QString str3 =curDate.toString("ddd");
ui->time1Label->setText(str1+" "+str2);
ui->date1Label->setText(str3);
ui->time2Label->setText(str1+" "+str2);
ui->date2Label->setText(str3);
});
timer->start(1000);
//
//4 tcpServer,准备接收指令
QTcpServer *tcpServer = new QTcpServer(this);
bool bListen = tcpServer->listen(QHostAddress::Any,8899);
if(bListen){
connect(tcpServer,&QTcpServer::newConnection,[=](){
m_pSocket = tcpServer->nextPendingConnection();
connect(m_pSocket,SIGNAL(readyRead()),this,SLOT(sl_readTcpData()));
});
}else
qDebug()<<"tcpListenError:"<<tcpServer->errorString();
}
Widget::~Widget()
{
delete ui;
}
void Widget::readSettings()
{
QSettings iniFile(QCoreApplication::applicationDirPath()+ "/settings.ini",QSettings::IniFormat);
g_sFontName = iniFile.value("FontName").toString();
g_sFontSize = iniFile.value("FontSize").toString();
g_sColor = iniFile.value("Color").toString();
g_sSpeed = iniFile.value("Speed").toString();
g_sText = iniFile.value("Text").toString();
updateData();
qDebug()<<"readSettings:"<<g_sFontName<<g_sFontSize<<g_sColor<<g_sSpeed<<g_sText;
}
void Widget::saveSettings()
{
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QSettings iniFile(QCoreApplication::applicationDirPath()+ "/settings.ini",QSettings::IniFormat);
iniFile.setIniCodec(codec);
iniFile.setValue("FontName",g_sFontName);
iniFile.setValue("FontSize",g_sFontSize);
iniFile.setValue("Color",g_sColor);
iniFile.setValue("Speed",g_sSpeed);
iniFile.setValue("Text",g_sText);
}
void Widget::initUi()
{
m_ticker1 = new Ticker(this);
QGridLayout* layout1 = new QGridLayout(ui->textLab1);
layout1->addWidget(m_ticker1);
layout1->setMargin(0);
ui->textLab1->setLayout(layout1);
m_ticker2 = new Ticker(this);
QGridLayout* layout2 = new QGridLayout(ui->textLab2);
layout2->addWidget(m_ticker2);
layout2->setMargin(0);
ui->textLab2->setLayout(layout2);
m_ticker3 = new Ticker(this);
QGridLayout* layout3 = new QGridLayout(ui->textLab3);
layout3->addWidget(m_ticker3);
layout3->setMargin(0);
ui->textLab3->setLayout(layout3);
m_ticker4 = new Ticker(this);
QGridLayout* layout4 = new QGridLayout(ui->textLab4);
layout4->addWidget(m_ticker4);
layout4->setMargin(0);
ui->textLab4->setLayout(layout4);
connect(m_ticker1,SIGNAL(finish()),m_ticker2,SLOT(start()));
connect(m_ticker2,SIGNAL(finish()),m_ticker3,SLOT(start()));
connect(m_ticker3,SIGNAL(finish()),m_ticker4,SLOT(start()));
connect(m_ticker4,SIGNAL(finish()),m_ticker1,SLOT(start()));
}
void Widget::updateData()
{
if(m_ticker1){
m_ticker1->setParam(g_sFontName,g_sFontSize,g_sColor,g_sSpeed,g_sText);
}
if(m_ticker2){
m_ticker2->setParam(g_sFontName,g_sFontSize,g_sColor,g_sSpeed,g_sText);
}
if(m_ticker3){
m_ticker3->setParam(g_sFontName,g_sFontSize,g_sColor,g_sSpeed,g_sText);
}
if(m_ticker4){
m_ticker4->setParam(g_sFontName,g_sFontSize,g_sColor,g_sSpeed,g_sText);
}
m_ticker1->start();
}
void Widget::sl_readTcpData()
{
if(m_pSocket){
QString str = m_pSocket->readAll();
if(str.contains("$$$$")&&str.count("$$$$")==1)
{
QString speed=g_sSpeed,color=g_sColor,font=g_sFontName,fontSize=g_sFontSize,text=g_sText;
if(str.contains("Speed")){//速度
QStringList strList = str.split(":");
if(strList.size()==2)
{
QString tmpStr = strList.at(1);
speed = tmpStr.remove("$$$$");
}
}
else if(str.contains("Color")){//颜色
QStringList strList = str.split(":");
if(strList.size()==5)
{
QString rStr = strList.at(1);
QString gStr = strList.at(2);
QString bStr = strList.at(3);
QString tmpA = strList.at(4);
QString aStr = tmpA.remove("$$$$");
color=rStr+":"+gStr+":"+bStr+":"+aStr;
}
}
else if(str.contains("Text")){//内容
QStringList strList = str.split(":");
if(strList.size()==2)
{
QString tmpStr = strList.at(1);
tmpStr.remove("$$$$");
text = tmpStr;
}
}
else if(str.contains("Font")){//字体
QStringList strList = str.split(":");
if(strList.size()==3)
{
font = strList.at(1);
QString tmpFontSize = strList.at(2);
fontSize = tmpFontSize.remove("$$$$");
}
}
qDebug()<<"sl_readTcpData:"<<speed<<color<<font<<fontSize<<text;
g_sFontName=font;
g_sFontSize=fontSize;
g_sColor=color;
g_sSpeed=speed;
g_sText=text;
saveSettings();
updateData();
}
}
}
Qt 实现的跑马灯效果
需积分: 45 120 浏览量
2019-06-18
14:30:34
上传
评论 5
收藏 14.54MB ZIP 举报
土拨鼠不是老鼠
- 粉丝: 1487
- 资源: 16
最新资源
- 全卷积网络基于voc2012数据集简单pytorch实现
- pycharm的一些介绍-用于更好的学习python
- 基于C++的程序设计大赛天梯赛L2答案(天梯赛)
- 基于python实现的三次样条插值和均值插值法实现
- Python语言教程2-python批量图片大小处理-多文件夹
- Python语言教程1-python批量图片重命名,将后缀某几个不想要的字去除
- Space Combat Kit 太空战斗套件Unity游戏开发插件资源unitypackage C#
- Universal Device Preview 通用设备预览Unity游戏开发插件资源unitypackage
- Paladin Anim Set 圣骑士动画集Unity游戏动作动画插件资源unitypackage
- 计算机财务管理期末考报表部分题目及答案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈