QT day02

头文件:

#ifndef WIDGET_H
#define WIDGET_H        //防止头文件重复包含

#include <QWidget>
QT_BEGIN_NAMESPACE

namespace Ui { class Widget; }  //将其他文件中的命名空间进行声明

QT_END_NAMESPACE
//自定义的类的声明 公共继承自QWidget:QWidget
class Widget : public QWidget
{
    Q_OBJECT    //信号与槽的源对象

public:
    Widget(QWidget *parent = nullptr);  //构造函数的声明且带有默认参数
    ~Widget(); 
   void onLoginClicked();
   void onCancelClicked();
   void clicked();
   void clicked_1();
 
signals:
    void jump();
    void my_signal();
    void my_signal_1();                        //虚析构函数的声明    
private:
    Ui::Widget *ui;     //成员属性:指针
};
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMovie>
#include <QLineEdit>
#include <QApplication>
#include <QMessageBox>
#include <iostream>
#include <QDebug>


Widget::Widget(QWidget *parent) //定义有参构造函数
    : QWidget(parent)
    , ui(new Ui::Widget)        //给自己类中的指针实例化空间
{
    this->setFixedSize(520,520);//固定大小
    //ui->setupUi(this);        //将ui界面上拖拽的组件展示到this界面上
    //按钮组件
    this->setWindowTitle("QQ登录");
    this->resize(520,520);
    this->setStyleSheet("background-color:lightblue");
    QPushButton *btn1 = new QPushButton;
    btn1->setParent(this);
    btn1->setText("登录");
    btn1->resize(60,40);
    btn1->move(150,300);
    btn1->setStyleSheet("background-color:lightgreen");
    QPushButton *btn2 = new QPushButton(this);
    btn2->setText("取消");
    btn2->resize(btn1->size());
    btn2->move(300,300);
    btn2->setStyleSheet("background-color:lightgreen");
    //行编辑器
    QLineEdit *edit1 = new QLineEdit;
    edit1->setParent(this);
    edit1->resize(250,30);
    edit1->move(150,150);
    edit1->setPlaceholderText("账号");
//    edit1->setEchoMode(QLineEdit::Password);//隐式输入账号
    QLineEdit *edit2 = new QLineEdit(this);
    edit2->resize(edit1->size());
    edit2->move(150,200);
    edit2->setPlaceholderText("密码");
    edit2->setEchoMode(QLineEdit::Password);
    //创建标签
    QLabel *lab1 = new QLabel;
    lab1->setParent(this);
    lab1->setText("账号:");
    lab1->move(edit1->x()-60,edit1->y());
    QLabel *lab2 = new QLabel("密码:",this);
    lab2->move(edit2->x()-60,edit2->y());
    connect(btn1, &QPushButton::clicked, this, &Widget::onLoginClicked); 
    connect(btn2, &QPushButton::clicked, this, &Widget::onCancelClicked); 
    connect(this,&Widget::my_signal,this,&Widget::clicked);
    connect(this,&Widget::my_signal_1,this,&Widget::clicked_1);

}

Widget::~Widget()               //定义析构函数
{
    delete ui;                  //释放ui界面组件的空间
}

void Widget::onCancelClicked()//退出功能的槽函数
{
    QMessageBox box(QMessageBox::Question,//图标,问题图标
                    "退出",//对话框标题
                    "请确定要退出吗?",//对话框文本内容
                    QMessageBox::Ok|QMessageBox::No,//对话框提供的按钮
                    this);//父组件
    box.setButtonText(QMessageBox::Ok,"是");
    box.setButtonText(QMessageBox::No,"否");
    box.setDefaultButton(QMessageBox::No);
    //显示对话框,返回用户点击的按钮值
   int num = box.exec();
   //判断用户点击的按钮值
   if(num == QMessageBox::Ok)
   {
       qApp->quit();
   }
}
void Widget::onLoginClicked()//登录功能的槽函数
{
    QString usr = "88888";
    QString pwd = "88888";
    QString username = edit1->text();
    QString password = edit2->text();
    if ((username == usr) && (password == pwd))
    {
        emit my_signal();
    }
    else
    {
        emit my_signal_1();
    }
}
void Widget::clicked()
{
    QMessageBox::information(this, "登录成功","欢迎光临" QMessageBox::Ok);
    this->close();
    emit jump();//发射自定义跳转信号
}
void Widget::clicked_1()
{
    QMessageBox msgBox(QMessageBox::Warning, "错误", "账号或密码错误,请重新输入",
                        QMessageBox::Ok, this);
     msgBox.exec();
}

主文件:

#include "widget.h" //文件包含 自定义头文件
#include "second.h"
#include <QApplication> //包含应用程序的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //使用应用程序类实例化对象并调用有参构造
    Widget w;   //使用自定义类调用无参构造在栈区生成一个界面对象
    w.show();   //调用对象的成员函数展示界面
    second s;
    QObject::connect(&w,&Widget::jump,&s,&Second::jump_slot);

    return a.exec();    //使用应用程序类对象并调用成员函数保证页面不被关闭
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值