commit d2a6974b55665b8980d18f3e0985585076ce243a Author: 1 <1@11.com> Date: Thu Jan 20 14:34:15 2022 +0800 新建 diff --git a/SmartGreenhouse.pro b/SmartGreenhouse.pro new file mode 100644 index 0000000..7d2ee79 --- /dev/null +++ b/SmartGreenhouse.pro @@ -0,0 +1,40 @@ +QT += core gui network sql +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++11 + +# The following define makes your compiler emit warnings if you use +# any Qt feature that has been marked deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + main.cpp \ + mainmenu.cpp \ + sql.cpp \ + submenu.cpp + +HEADERS += \ + mainmenu.h \ + sql.h \ + submenu.h + +FORMS += \ + mainmenu.ui \ + submenu.ui + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target + +DISTFILES += + +RESOURCES += \ + img/img.qrc diff --git a/img/OIP-C.jpg b/img/OIP-C.jpg new file mode 100644 index 0000000..dd06c1b Binary files /dev/null and b/img/OIP-C.jpg differ diff --git a/img/OIP-C1.jpg b/img/OIP-C1.jpg new file mode 100644 index 0000000..a30f47c Binary files /dev/null and b/img/OIP-C1.jpg differ diff --git a/img/OIP-C2.jpg b/img/OIP-C2.jpg new file mode 100644 index 0000000..a7eb4f0 Binary files /dev/null and b/img/OIP-C2.jpg differ diff --git a/img/R-C.jpg b/img/R-C.jpg new file mode 100644 index 0000000..7f04cf6 Binary files /dev/null and b/img/R-C.jpg differ diff --git a/img/hide.png b/img/hide.png new file mode 100644 index 0000000..6a0eac0 Binary files /dev/null and b/img/hide.png differ diff --git a/img/ico.png b/img/ico.png new file mode 100644 index 0000000..065c1ff Binary files /dev/null and b/img/ico.png differ diff --git a/img/img.qrc b/img/img.qrc new file mode 100644 index 0000000..783fe88 --- /dev/null +++ b/img/img.qrc @@ -0,0 +1,10 @@ + + + hide.png + show.png + ico.png + R-C.jpg + OIP-C.jpg + OIP-C1.jpg + + diff --git a/img/show.png b/img/show.png new file mode 100644 index 0000000..3bce2cf Binary files /dev/null and b/img/show.png differ diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..05ace16 --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include "mainmenu.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainMenu w; + w.show(); + return a.exec(); +} diff --git a/mainmenu.cpp b/mainmenu.cpp new file mode 100644 index 0000000..fcb7b1c --- /dev/null +++ b/mainmenu.cpp @@ -0,0 +1,117 @@ +#include "mainmenu.h" +#include "ui_mainmenu.h" + +MainMenu::MainMenu(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainMenu) +{ + ui->setupUi(this); + + ui->lineEdit_2->setText("admin"); + ui->lineEdit->setText("123456"); + ui->lineEdit->setEchoMode(QLineEdit::Password); + this->setWindowIcon(QIcon(":/ico.png")); + this->setWindowTitle("快乐不起来啊"); + + this->setAutoFillBackground(true); + QPalette palette; + QPixmap pixmap(":/Resources/Penguins.jpg"); + palette.setBrush(QPalette::Window, QBrush(pixmap)); + this->setPalette(palette); +} + +MainMenu::~MainMenu() +{ + delete ui; +} + + +void MainMenu::on_pushButton_clicked() +{ + tcpSocket = new QTcpSocket; + QString ip = ui->lineEdit_3->text(); + tcpSocket->connectToHost(ip,7777); + + + + connect(tcpSocket, SIGNAL(connected()), this, SLOT(show_connected())); + connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(show_disconnected())); +} + +void MainMenu::on_checkBox_stateChanged(int arg1) +{ + if(arg1) + { + ui->lineEdit->setEchoMode(QLineEdit::Normal); + } + else if (!arg1) + { + ui->lineEdit->setEchoMode(QLineEdit::Password); + } + else { + qDebug("err: ui->lineEdit->setEchoMode(QLineEdit::Password);"); + return; + } + return ; +} +void MainMenu::show_connected() +{ + int ret = QMessageBox::information(this, tr("👨‍👩‍👦‍👦 登录成功"),tr("点击取消退出连接"), + QMessageBox::Ok, + QMessageBox::Cancel); + if(ret == QMessageBox::Cancel) + { + // tcpSocket->disconnected(); + delete tcpSocket; + return; + } + else { + + + //跳转到子界面 + submenu *SubWindow = new submenu; + connect(SubWindow,SIGNAL(widget_close()),this,SLOT(subWindowClosed() )); + SubWindow->show(); + this->hide(); +// this->close(); + } + +} +void MainMenu::show_disconnected() +{ + int ret = QMessageBox::information(this, tr("👨‍👩‍👦‍👦 连接断开"),tr("是否重新连接?"), + QMessageBox::Yes,QMessageBox::No,QMessageBox::Cancel); + if(ret == QMessageBox::Cancel) + { + return; + } + if(ret == QMessageBox::No) + { + // 退出处理? + // if(tcpSocket) + // { + // delete tcpSocket; + // } + // Sleep(20); + return; + } + else if(ret == QMessageBox::Yes) + { + ui->pushButton->click(); + } + else{ + qDebug("error:---"); + return ; + } +} +void MainMenu::Sleep(int msec) +{ + QTime dieTime = QTime::currentTime().addMSecs(msec); + while( QTime::currentTime() < dieTime ) + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); +} +void MainMenu::subWindowClosed() +{ + show(); + tcpSocket->close(); +} diff --git a/mainmenu.h b/mainmenu.h new file mode 100644 index 0000000..b53fd7b --- /dev/null +++ b/mainmenu.h @@ -0,0 +1,38 @@ +#ifndef MAINMENU_H +#define MAINMENU_H + +#include +#include +#include +#include // +#include //地址格式 +#include +#include + +#include "submenu.h" + +QT_BEGIN_NAMESPACE +namespace Ui { class MainMenu; } +QT_END_NAMESPACE + +class MainMenu : public QMainWindow +{ + Q_OBJECT + +public: + MainMenu(QWidget *parent = nullptr); + ~MainMenu(); + +private slots: + void on_pushButton_clicked(); + void on_checkBox_stateChanged(int arg1); + void show_connected(); + void show_disconnected(); + void Sleep(int msec); + void subWindowClosed(); + +private: + QTcpSocket * tcpSocket; + Ui::MainMenu *ui; +}; +#endif // MAINMENU_H diff --git a/mainmenu.ui b/mainmenu.ui new file mode 100644 index 0000000..cd44ddb --- /dev/null +++ b/mainmenu.ui @@ -0,0 +1,108 @@ + + + MainMenu + + + + 0 + 0 + 800 + 600 + + + + MainMenu + + + + + + 255 + 217 + 183 + 109 + + + + + + + + + + + 账户: + + + + + + + 密码: + + + + + + + IP: + + + + + + + + + + + + + + + + + 172.16.3.135 + + + + + + + + + + + + + 登录 + + + + + + + 显示密码 + + + + + + + + + + + + 0 + 0 + 800 + 23 + + + + + + + + diff --git a/sql.cpp b/sql.cpp new file mode 100644 index 0000000..2935ccf --- /dev/null +++ b/sql.cpp @@ -0,0 +1,99 @@ +#include "sql.h" + +sql::sql() +{ + //创建数据库 + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加驱动 + db.setDatabaseName("SmartGreenhouse.db"); //设置库名 + bool ok = db.open(); + if(!ok){ + qDebug("open failed"); + return ; + } + else { + qDebug()<<"open success"; + } + + //通过db创建表 + //db.exec("create table usr (name text, passwd text); "); + + + //通过query创建表 + QSqlQuery query; + ok = query.exec("create table if not exists user (id text, name text);"); + if(!ok){ + qDebug("failed to create user table"); + } + else { + // qDebug()<<"create table success"; + qDebug()<<"Student table created successfully"; + } + ok = query.exec("create table if not exists Data (temp text, hum text,light text,co2 text);"); + if(!ok){ + qDebug("failed to create Data table"); + } + else { + qDebug()<<"Data table created successfully"; + } + + + //插入数据库 + + /*QString id = ui->lineEdit->text(); + QString name = ui->lineEdit_2->text(); + + + QString sql = QString("insert into stu values ('%1','%2')").arg(id).arg(name); + + qDebug()<<"sql:"<lineEdit->text(); + + QString sql = QString("delete from stu where id='%1'").arg(id); + + qDebug()<<"sql:"< +//#include +#include +#include +#include +class sql +{ +public: + sql(); +}; + +#endif // SQL_H diff --git a/submenu.cpp b/submenu.cpp new file mode 100644 index 0000000..79f8f28 --- /dev/null +++ b/submenu.cpp @@ -0,0 +1,23 @@ +#include "submenu.h" +#include "ui_submenu.h" + +submenu::submenu(QWidget *parent) : + QWidget(parent), + ui(new Ui::submenu) +{ + ui->setupUi(this); + this->setWindowIcon(QIcon(":/ico.png")); + this->setWindowTitle("风中有朵雨做的云"); +} + +submenu::~submenu() +{ + delete ui; +} + +void submenu::on_pushButton_clicked() +{ + this->hide(); + emit widget_close(); + this->close(); +} diff --git a/submenu.h b/submenu.h new file mode 100644 index 0000000..365192b --- /dev/null +++ b/submenu.h @@ -0,0 +1,28 @@ +#ifndef SUBMENU_H +#define SUBMENU_H + +#include + +namespace Ui { +class submenu; +} + +class submenu : public QWidget +{ + Q_OBJECT + +public: + explicit submenu(QWidget *parent = nullptr); + ~submenu(); + +private slots: + void on_pushButton_clicked(); + +private: + Ui::submenu *ui; +signals: + void widget_close(void); + +}; + +#endif // SUBMENU_H diff --git a/submenu.ui b/submenu.ui new file mode 100644 index 0000000..246a89f --- /dev/null +++ b/submenu.ui @@ -0,0 +1,32 @@ + + + submenu + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + 160 + 240 + 75 + 23 + + + + 退出 + + + + + +