Widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include "form.h"
- #include
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
-
-
- private slots:
-
- void on_btn2_clicked(QLineEdit * edit1,QLineEdit * edit2);
-
- void on_btn1_clicked();
-
- void on_btn3_clicked();
-
- signals:
- void jump();
-
-
- private:
- Ui::Widget *ui;
- Form *s1;
-
- Form *th;
- };
- #endif // WIDGET_H
form.h
- #ifndef FORM_H
- #define FORM_H
-
- #include
-
- namespace Ui {
- class Form;
- }
-
- class Form : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Form(QWidget *parent = nullptr);
- ~Form();
-
- private:
- Ui::Form *ui;
-
- public:
- void jump_slot();
- };
-
- #endif // FORM_H
- #include "widget.h"
-
- #include
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w;
- w.show();
- return a.exec();
- }
form.cpp
- #include "form.h"
- #include "ui_form.h"
-
- Form::Form(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Form)
- {
- ui->setupUi(this);
- }
-
- Form::~Form()
- {
- delete ui;
- }
-
-
- void Form::jump_slot()
- {
- this->show();
- }
widget.cpp
- #include "widget.h"
- #include "ui_widget.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
-
- {
- ui->setupUi(this);
- s1 = new Form;
- connect(this,&Widget::jump,s1,&Form::jump_slot);
-
-
- qDebug() << this->size(); //获取当前界面的尺寸
- this->resize(QSize(500,400)); //重新使用匿名对象作为函数参数设置当前组件的尺寸
- this->setMaximumSize(1000,800); //设置最大尺寸
- this->setMinimumSize(200,100); //设置最小尺寸
- this->setFixedSize(600,400); //设置固定尺寸
-
- qDebug() << this->windowTitle(); //获取当前组件的窗口标题
- this->setWindowTitle("221#223社畜登录框"); //设置窗口标题
- this->setWindowIcon(QIcon("C:\\Users\\Administrator\\Desktop\\QQ.png")); //设置窗口图标
- this->setStyleSheet("background-color:skyblue;"); //设置窗口样式表
- this->setWindowOpacity(1); //设置窗口透明度
- //this->setWindowFlag(Qt::FramelessWindowHint); //去掉窗口头部
-
-
-
- //使用无参构造函数,构造一个按钮
- QPushButton *btn1 = new QPushButton;
- //btn1->show(); //有该函数,但是没有父组件,只能单独存在
- btn1->setParent(this); //将当前界面作为父组件
- btn1->setText("找回密码"); //设置按钮上的文本内容
- qDebug()<
size(); //获取按钮尺寸 - btn1->resize(80,30); //重新设置按钮组件尺寸
- qDebug()<
size(); - btn1->setIcon(QIcon("C:\\Users\\Administrator\\Desktop\\QQ.png")); //设置图标
- btn1->move(150,350); //移动按钮组件
- btn1->setStyleSheet("background-color:skyblue; border-radius:10px; "); //设置按钮样式表
- //btn1->setEnabled(false); //设置不可用状态
-
-
-
- //构造一个按钮,构造是直接指定父组件
- QPushButton *btn2 = new QPushButton(this);
- btn2->setText("登录");
- btn2->resize(btn1->size());
- btn2->move(btn1->x() + 110,btn1->y());
- btn2->setIcon(QIcon("C:\\Users\\Administrator\\Desktop\\QQ.png"));
- btn2->setStyleSheet("background-color:skyblue; border-radius:10px; ");
- //btn2->setEnabled(false);
-
-
-
- //构造按钮时直接给定文本内容以及父组件
- QPushButton *btn3 = new QPushButton(this);
- btn3->resize(btn1->size());
- btn3->setText("退出");
- btn3->move(btn2->x() + 110,btn2->y());
- btn3->setIcon(QIcon("C:\\Users\\Administrator\\Desktop\\QQ.png"));
- btn3->setStyleSheet("background-color:skyblue; border-radius:10px; ");
- //btn3->setEnabled(false);
-
- /*
- //构造按钮时直接给定图标、文本内容、父组件
- QPushButton *btn4 = new QPushButton(QIcon("C:\\Users\\Administrator\\Desktop\\QQ.png"),"选项",this);
- btn4->move(btn3->x() + 150,btn3->y());
- btn4->setStyleSheet("background-color:skyblue; border-radius:10px; ");
- btn4->setEnabled(false);
- */
-
-
- //构造一个行编辑器对象,并指定父组件
- QLineEdit *edit1 = new QLineEdit(this);
- edit1->resize(250,30);
- edit1->move(btn1->x() + 50,btn1->y() - 150);
- edit1->setStyleSheet("background-color:skyblue;");
- //edit1->setEchoMode(QLineEdit::Password); //设置回显模式
- edit1->setMaxLength(10);
- edit1->setPlaceholderText("社畜账号/手机/邮箱");
- //edit1->setText("*******"); //设置默认文本
- //edit1->setAlignment(Qt::AlignCenter); //文本内容居中
- //QComboBox *cb1 = new QComboBox(this);
-
-
-
-
- //构造一个行编辑器,给定初始文本,并指定父组件
- //QLineEdit *edit2 = new QLineEdit("*****",this);
-
-
-
- QLineEdit *edit2 = new QLineEdit(this);
- edit2->resize(250,30);
- edit2->move(btn1->x() + 50,btn1->y() - 100);
- edit2->setStyleSheet("background-color:skyblue;");
- edit2->setEchoMode(QLineEdit::Password); //设置回显模式
- edit2->setMaxLength(15);
- edit2->setPlaceholderText("******");
-
-
- //实例化一个标签,并给定初始文本内容,并指定父组件
- QLabel *lab1 = new QLabel("账号:",this);
- lab1->resize(40,30);
- lab1->setStyleSheet("background-color:skyblue;");
- lab1->move(btn1->x(),btn1->y() - 150);
-
-
-
- QLabel *lab2 = new QLabel("密码:",this);
- lab2->resize(40,30);
- lab2->setStyleSheet("background-color:skyblue;");
- lab2->move(btn1->x(),btn1->y() - 100);
-
-
- QLabel *lab3 = new QLabel(this);
- lab3->resize(600,200);
- lab3->setStyleSheet("background-color:white;");
- lab3->move(0,btn1->y() - 400);
- lab3->setPixmap(QPixmap("C:\\Users\\Administrator\\Desktop\\QQ截图20230915200445.png"));
- lab3->setScaledContents(true);
-
-
-
-
-
- QCheckBox *chbox1 = new QCheckBox("自动登录",this);
- chbox1->move(btn1->x() + 40,btn1->y() - 50);
-
-
- QCheckBox *chbox2 = new QCheckBox("记住密码",this);
- chbox2->move(btn1->x() + 180,btn1->y() - 50);
-
-
-
-
-
-
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
- void Widget::on_btn2_clicked(QLineEdit * edit1,QLineEdit * edit2)
- {
- //登录失败
- if(edit1->text()!="admin"&&edit2->text()!="123456")
- {
- //调用构造函数实例化对象
- QMessageBox box(QMessageBox::Critical,//图标
- "错误",//对话框标题
- "账号密码不匹配,是否重新登录",//对话框文本
- QMessageBox::Yes|QMessageBox::No,//提供的按钮
- this);//父组件
- box.setDefaultButton(QMessageBox::Yes);
- box.setButtonText(QMessageBox::Yes,"OK");
- box.setButtonText(QMessageBox::No,"cancel");
- //调用exec函数运行对话框
- int ret = box.exec();
- //对结果进行判断
- if(ret==QMessageBox::Yes)
- {
- //清空内容
- edit1->clear();
- }
- else
- {
- //关闭界面
- this->close();
- }
- }
- //登录成功
- else
- {
- //调用构造函数实例化对象
- QMessageBox box(QMessageBox::NoIcon,//图标
- " ",//对话框标题
- "登录成功",//对话框文本
- QMessageBox::Ok,//提供的按钮
- this);//父组件
- box.exec();//运行对话框
- emit jump();//跳转界面
- this->close();//关闭当前界面
- }
-
- }
-
- //退出按钮
- void Widget::on_btn3_clicked()
- {
- int ret=QMessageBox::warning(this,
- "警告",
- "是否确定要退出登录",
- QMessageBox::Yes | QMessageBox::No,
- QMessageBox::No);
-
- //对结果进行判断如果点yes则关闭
- if(ret==QMessageBox::Yes)
- {
- this->close();//关闭界面
- }
- }
-
- void Widget::on_btn1_clicked()
- {
-
- }