#include "mainwindow.h"
#include "ui_mainwindow.h"
extern UseData m_UseInfo;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_tcpClient = new tcpClient(this);
m_tcpClient->start();
QTimer *lineT = new QTimer(this);
initLineChart();
initPersonalInfo();
initTable(ui->useLoginTable, 0, 0,{"Name","Level","dateTime"});
initTable(ui->userManTable, 0, 0, {"Name", "PassWord", "Level", "Classes"});
ui->tabWidget->setCurrentIndex(0);
ui->tabWidget->tabBar()->setEnabled(false);
lineT->start(1000);
connect(m_tcpClient->tcpSocket,&QTcpSocket::connected, this, &MainWindow::connectOk);
connect(m_tcpClient->tcpSocket,&QTcpSocket::disconnected,this,&MainWindow::disConnectOk);
connect(m_tcpClient, &tcpClient::sendTcpMsg, this,&MainWindow::updateData);
connect(this, &MainWindow::connectServer, m_tcpClient, &tcpClient::connectServer);
connect(this, &MainWindow::disConnectServer, m_tcpClient, &tcpClient::disConnectServer);
connect(lineT, SIGNAL(timeout()), this, SLOT(updateLine()));
}
MainWindow::~MainWindow()
{
emit disConnectServer();
m_tcpClient->setRun();
m_tcpClient->wait();
delete ui;
}
void MainWindow::initLineChart()
{
maxXTickCount = 5;
m_chart = new QChart;
ui->widget_2->setChart(m_chart);
ui->widget_2->setRubberBand(QChartView::HorizontalRubberBand);
ui->widget_2->setRenderHint(QPainter::Antialiasing);
m_series = new QSplineSeries;
m_series->setUseOpenGL(true);
axisX = new QValueAxis;
// axisX->setLabelFormat("%g");
axisX->setLabelsVisible(false);
curSec = QTime::currentTime().second();
axisX->setTickCount(maxXTickCount);
// axisX->setTitleText("axisX");
axisX->setRange(curSec, curSec+maxXTickCount*2);//设置显示范围
axisY = new QValueAxis;
axisY->setRange(-30, 30);
axisY->setTickCount(7);
m_x = curSec;
m_y = -25;
m_series->append(m_x, m_y);
m_chart->createDefaultAxes();
m_chart->addSeries(m_series);
m_chart->setAxisX(axisX, m_series);
m_chart->setAxisY(axisY, m_series);
m_chart->legend()->hide();
m_chart->setTheme(QChart::ChartThemeDark);
}
void MainWindow::initPersonalInfo()
{
ui->nameLab->setText(m_UseInfo.name);
ui->levelLab->setText(QString("%1").arg(m_UseInfo.level));
ui->timeLab->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm"));
// if(m_UseInfo.level < UseLevel)
// ui->sortLab->setText("普通用户");
// else
// ui->sortLab->setText("管理员");
ui->sortLab->setText(m_UseInfo.classes);
}
void MainWindow::initTable(QTableWidget *table, int row, int col, QStringList strList)
{
//设置单选
table->setSelectionMode(QAbstractItemView::SingleSelection);
//设置选中时默认选择一行
table->setSelectionBehavior(QAbstractItemView::SelectRows);
//禁止编辑
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
table->verticalHeader()->setDefaultSectionSize(10); //设置一行默认高度
//设置水平表头的标题
table->setHorizontalHeaderLabels(strList);
//设置垂直表头不可见
table->verticalHeader()->setHidden(true);
}
//修改用户密码
void MainWindow::on_alterPwdBtn_clicked()
{
QString oldPwd = ui->oldPwdEdit->text().trimmed();
QString newPwd = ui->newPwdEdit->text().trimmed();
if(oldPwd.isEmpty() || newPwd.isEmpty())
{
QMessageBox::warning(this,"warn",QString("密码不能为空,请重新输入"));
return;
}
if(oldPwd == m_UseInfo.pwd)
{
bool m_ok = false;
//普通用户
if(m_UseInfo.classes == QString("普通用户"))
m_ok = My_SQL::changeData(QString("update meanTable set pwd = '%1' where name = '%2'").arg(newPwd).arg(m_UseInfo.name));
//管理员
else if(m_UseInfo.classes == QString("管理员"))
m_ok = My_SQL::changeData(QString("update rootTable set pwd = '%1' where name = '%2'").arg(newPwd).arg(m_UseInfo.name));
QMessageBox::information(this,"info",m_ok?QString("修改成功"):QString("修改失败"));
}
else
{
QMessageBox::warning(this,"warn",QString("密码错误,请重新输入"));
return;
}
}
//注销
void MainWindow::on_exitBtn_clicked()
{
QMessageBox::StandardButton m_ok = QMessageBox::information(nullptr, "info", "是否需要重新登录", QMessageBox::Ok, QMessageBox::Cancel);
if(m_ok == QMessageBox::Ok)
{
//重新启动登录界面
QProcess *p = new QProcess();
p->startDetached("D:/build-MES_user-Desktop_Qt_5_15_0_MSVC2019_64bit-Debug/debug/MES_user.exe");
}
//关闭当前登录
this->close();
}
//主页
void MainWindow::on_toolButton_5_clicked()
{
ui->tabWidget->setCurrentIndex(0);
}
//个人中心
void MainWindow::on_toolButton_clicked()
{
ui->tabWidget->setCurrentIndex(1);
}
//用户管理
void MainWindow::on_toolButton_2_clicked()
{
ui->tabWidget->setCurrentIndex(2);
}
//信息查询
void MainWindow::on_toolButton_3_clicked()
{
ui->tabWidget->setCurrentIndex(3);
}
//设置
void MainWindow::on_toolButton_4_clicked()
{
ui->tabWidget->setCurrentIndex(4);
}
//用户登录信息查询
void MainWindow::on_pushButton_4_clicked()
{
int rowNum = ui->useLoginTable->rowCount();
for (int i=0; i<rowNum; ++i) {
ui->useLoginTable->removeRow(0);
}
QDateTime _time = QDateTime::currentDateTime();
QMap<QString, int> block;
int total = 0;
for (int i=0; i<ui->comboBox->currentIndex()*3+1; ++i) {
QString _day = _time.addDays(-1*i).toString("yyyyMMdd");
QVector<UseLoginInfo> v;
My_SQL::selectData(QString("select * from loginTable t where t.date like '%1%'").arg(_day), v);
int count = v.count();
total += count;
if(count != 0)
block.insert(_day, count);
for (int i=0; i<count; ++i) {
ui->useLoginTable->insertRow(i);
ui->useLoginTable->setItem(i, 0, new QTableWidgetItem(QString("%1").arg(v.at(i).name)));
ui->useLoginTable->setItem(i, 1, new QTableWidgetItem(QString("%1").arg(v.at(i).level)));
ui->useLoginTable->setItem(i, 2, new QTableWidgetItem(QString("%1").arg(v.at(i).date)));
}
}
if(total == 0)
return;
//创建饼图并显示
QPieSeries *series = new QPieSeries();
for(auto it=block.begin();it!=block.end(); ++it){
QString percentage = QString::number(float(it.value())/total*100, 'f', 1);
//设置比例
series->append(it.key().right(2)+ " "+percentage, it.value()*100/total);
}
series->setLabelsVisible();
QChart *chart = new QChart();
chart->addSeries(series);
// chart->setTitle("PieChart Example");
chart->legend()->hide();
ui->pieChart->setChart(chart);
ui->pieChart->setRenderHint(QPainter::Antialiasing);
// ui->pieChart->chart()->legend()->setAlignment(Qt::AlignBottom);
ui->pieChart->chart()->setTheme(QChart::ChartThemeDark);
}
//用户管理 搜索功能
void MainWindow::on_serachToolBtn_clicked()
{
int rowNum = ui->userManTable->rowCount();
for (int i=0; i<rowNum; ++i) {
ui->userManTable->removeRow(0);
}
m_userData.clear();
ui->curUserLE->clear();
ui->curPwdLE->clear();
ui->levelSpinBox->setValue(0);
ui->useClassLab->setText("---");
//数据库表名
QString _t = "meanTable";
if(ui->userComBox->currentIndex() == 1)
_t = "rootTable";
if(ui->serachUNLineEdit->text().isEmpty())
My_SQL::selectData(QString("select * from %1").arg(_t), m_userData);
else
My_SQL::selectData(QString("sel
没有合适的资源?快使用搜索试试~ 我知道了~
Qt使用QPainter自绘温度计源代码
共31个文件
cpp:8个
h:7个
qss:7个
需积分: 0 39 下载量 183 浏览量
2023-07-19
11:34:15
上传
评论
收藏 100KB RAR 举报
温馨提示
Qt QPainter Qt自绘温度计控件
资源推荐
资源详情
资源评论
收起资源包目录
MES_user.rar (31个子文件)
MES_user
logindlg.ui 5KB
style5.qss 23KB
MES_user.pro 993B
mainwindow.h 2KB
style3.qss 14KB
eyes.png 25KB
qrc.qrc 407B
my_sql.h 1KB
forgetpwddlg.h 660B
style2.qss 13KB
my_sql.cpp 3KB
mainwindow.cpp 13KB
style1.qss 6KB
style7.qss 7KB
forgetpwddlg.ui 5KB
thermometredlg.cpp 4KB
logindlg.cpp 4KB
main.cpp 735B
tcpclient.h 538B
search.png 40KB
logindlg.h 790B
style6.qss 6KB
mainwindow.ui 34KB
registerdlg.cpp 3KB
registerdlg.h 726B
style4.qss 11KB
registerdlg.ui 5KB
tcpclient.cpp 1024B
MES_user.pro.user 22KB
forgetpwddlg.cpp 2KB
thermometredlg.h 797B
共 31 条
- 1
资源评论
weixin_46068528
- 粉丝: 28
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab开发的根据rvm回归模型自己编的matlab程序.rar
- 高效C++学生成绩管理系统:教育技术+C++17编程+数据管理+教务自动化
- 基于matlab开发的Tipping的相关向量机RVM的回归MATLAB程序,有英文注释,可以运行.rar
- 一个点击正反转程序实例,可实现案件电机正反转
- 搜索链接淘特搜索引擎共享版-tot-search-engine.rar
- 第十八届全国大学生智能汽车竞赛 摄像头组/镜头组
- 基于matlab开发的AUV惯性导航系统matlab仿真程序,包括轨迹生成、gps和sins组合、gps和dvl组合.rar
- 基于SSM的“个性化电子相册”的设计与实现.zip
- 如何在撰写科研文献时,使用ai工具辅助去完成科研工作
- 吉林大学计组笔记 自用 基于b站翼云图灵的课.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功