QT信号与槽/窗口组件优化

使用手动连接,将登录框中的取消按钮使用第二中连接方式,右击转到槽,在该槽函数中,调用关闭函数
将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断u界面上输入的账号是否为"admin",密码是否为"123456"如果账号密码匹配成功,则输出"登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空
代码:

mywidget.cpp

#include "mywidget.h"

Mywidget::Mywidget(QWidget *parent)
    : QWidget(parent)
{
    /********制作一个QQ登录界面*********************/
    this->resize(535,415);//设置登录窗口大小
    this->setFixedSize(535,415);//固定窗口大小
    this->setWindowTitle("QQ");//设置窗口标题
    this->setWindowIcon(QIcon(":/pictrue/QQ.png"));//设置窗口图标
    this->setStyleSheet("background-color:white");//背景设置成白色
    this->setWindowFlag(Qt::FramelessWindowHint);//隐藏窗口,设置为纯净窗口
    QLabel *lab1=new QLabel(this);//动态图标签
    lab1->resize(535,135);//动态标签大小
    QMovie *mv=new QMovie(":/pictrue/QQ3.gif");//设置一个动态图对象指针接收动态图
    lab1->setMovie(mv);//将动图设置到lab1标签中
    mv->start();//让动图动起来
    lab1->setScaledContents(true);//让图片自适应标签设置大小
    QLabel *lab2=new QLabel(this);//qq图标签
    lab2->resize(94,50);//qq标签大小
    lab2->setPixmap(QPixmap(":/pictrue/94x50.png"));
    lab2->setScaledContents(true);//让图片自适应标签设置大小
    QPushButton *btn1=new QPushButton("?",this);//设置按钮
    btn1->resize(20,20);//设置按钮大小
    btn1->move(440,0);//设置按钮位置
    btn1->setStyleSheet("background-color:rgb(14,114,240)");//设置按钮背景颜色
    QPushButton *btn2=new QPushButton("-",this);//设置最小化按钮
    btn2->resize(20,20);//设置按钮大小
    btn2->move(460,0);//设置按钮位置
    btn2->setStyleSheet("background-color:rgb(14,114,240)");//设置按钮背景颜色
    QPushButton *btn3=new QPushButton("x",this);//设置退出按钮
    btn3->resize(20,20);//设置按钮大小
    btn3->move(480,0);//设置按钮位置
    btn3->setStyleSheet("background-color:rgb(14,114,240)");//设置按钮背景颜色
    QLabel *lab3=new QLabel(this);//qq头像图标签
    lab3->setFixedSize(80,80);//qq标签大小
    lab3->setStyleSheet("background-color:white;border-radius:40px");//将标签设置为圆形
    QPixmap *pte=new QPixmap(":/pictrue/QQ.png");//加载图片
    QPixmap pix(pte->width(),pte->height());//创建新的qpixmap,作为新的裁剪容器
    pix.fill(Qt::transparent);//设置图片透明
    QPainter painter(&pix);//进行绘制
    painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);//抗锯齿效果
    int radius=pte->width() > pte->height() ? pte->height()/2 : pte->width()/2;//设置裁剪半径
    QPainterPath path;//裁剪区域
    //path.addEllipse(pte->rect().center(),70,62);//绘制裁剪区域大小
    path.addEllipse(pte->rect().center(),radius+8,radius);//绘制裁剪区域大小.微调裁剪范围
    painter.setClipPath(path);//只显示图片裁剪后的区域
    painter.drawPixmap(pix.rect(),*pte);//将源图片内容绘制到创建的pix上,非裁剪内容不显示
    //lab3->setPixmap(QPixmap(":/pictrue/QQ.png"));
    lab3->move(228,95);//设置头像位置
    lab3->setScaledContents(true);//让图片自适应标签设置大小
    lab3->setPixmap(pix);
    QLabel *lab4=new QLabel(this);//账号图标
    lab4->resize(24,36);//标签大小
    lab4->setPixmap(QPixmap(":/pictrue/24x36.png"));
    lab4->move(120,220);//设置位置
    lab4->setScaledContents(true);//让图片自适应标签设置大小
    edit1=new QLineEdit(this); //账户输入行编辑器
    edit1->resize(260,24);//设置行编辑大小
    edit1->move(144,225);//设置位置
    edit1->setPlaceholderText("QQ号码/手机/邮箱");//设置占位
    QPushButton *btn4=new QPushButton("<>",this);//设置历史切换按钮
    btn4->resize(20,24);//设置按钮大小
    btn4->move(404,225);//设置按钮位置
    QLabel *lab5=new QLabel(this);//密码图标
    lab5->resize(24,36);//标签大小
    lab5->setPixmap(QPixmap(":/pictrue/24xxx36.png"));
    lab5->move(120,254);//设置位置
    lab5->setScaledContents(true);//让图片自适应标签设置大小
    edit2=new QLineEdit(this); //密码输入行编辑器
    edit2->resize(260,24);//设置行编辑大小
    edit2->move(144,266);//设置位置
    edit2->setPlaceholderText("密码");
    edit2->setEchoMode(QLineEdit::Password);//设置显示模式
    QPushButton *btn5=new QPushButton("::",this);//设置鼠标输入按钮
    btn5->resize(20,24);//设置按钮大小
    btn5->move(404,266);//设置按钮位置
    QPushButton *btn6=new QPushButton(QIcon(":/pictrue/19x19.png")," 自动登录",this);//勾选自动登录按钮
    btn6->resize(100,21);//设置按钮大小
    btn6->move(121,300);//设置按钮位置
    QPushButton *btn7=new QPushButton(QIcon(":/pictrue/19x19.png")," 记住密码",this);//记住密码按钮
    btn7->resize(100,21);//设置按钮大小
    btn7->move(231,300);//设置按钮位置
    QPushButton *btn8=new QPushButton("找回密码",this);//找回密码按钮
    btn8->resize(80,21);//设置按钮大小
    btn8->move(344,300);//设置按钮位置
    QPushButton *btn9=new QPushButton("登录",this);//登录按钮
    btn9->resize(301,45);//设置按钮大小
    btn9->move(123,340);//设置按钮位置
    btn9->setStyleSheet("background-color:rgb(8,189,253);border-radius:4px");//设置按钮颜色
    QPushButton *btn10=new QPushButton("注册账号",this);//注册账号按钮
    btn10->resize(80,21);//设置按钮大小
    btn10->move(15,390);//设置按钮位置
    QPushButton *btn11=new QPushButton(QIcon(":/pictrue/30x30.png"),"",this);//扫二维码登录按钮
    btn11->resize(30,30);//设置按钮大小
    btn11->move(490,381);//设置按钮位置
    /*****************设置按钮功能******************************************/
    connect(btn3,SIGNAL(clicked()),this,SLOT(quitbtn()));//btn3点击关闭窗口
    connect(btn2,SIGNAL(clicked()),this,SLOT(showmin()));//btn2点击最小化窗口
    //connect(edit1,SIGNAL(editingFinished()),this,SLOT(verifyuser()));//获取行编辑器账户内容
    connect(edit2,SIGNAL(editingFinished()),this,SLOT(verifyuser()));//获取行编辑器密码
}

Mywidget::~Mywidget()
{
}


void Mywidget::quitbtn(){//内外定义关闭函数
    this->close();
}
void Mywidget::showmin(){//内外定义最小化函数
    this->showMinimized();
}
void Mywidget::verifyuser(){//内外验证账户函数
    QString username=edit1->text();
    QString userpasswd=edit2->text();
    //QMessageBox *box= new QMessageBox(this);
    if(username=="admin"&&userpasswd=="123456"){
        QMessageBox ::question(this,tr("系统提示"),tr("登录成功!"),QMessageBox::Ok,QMessageBox::Ok);//对话框提示登录成功
        this->close();
    }else{
       QMessageBox ::question(this,tr("系统提示"),tr("登录失败!"),QMessageBox::Ok,QMessageBox::Ok);//对话框提示登录失败
       edit1->clear();
       edit2->clear();//清空行编辑器
    }
}

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QIcon>//图标类
#include <QMovie> //动图类
#include <QLabel> //标签类
#include <QPushButton> //按钮类
#include <QLineEdit> //行编辑器
#include <QPixmap>
#include <QPainter>//绘制类
#include <QDebug>
#include <QMessageBox>//消息对话框
class Mywidget : public QWidget
{
    Q_OBJECT

public:
    Mywidget(QWidget *parent = nullptr);
    ~Mywidget();
private:
    QLineEdit *edit1;
    QLineEdit *edit2;
public slots:
    void quitbtn();//声明一个退出槽函数
    void showmin();//声明一个最小化函数
    void verifyuser();//声明验证用户账号密码
};
#endif // MYWIDGET_H

main.cpp

#include "mywidget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Mywidget w;
    w.show();
    return a.exec();
}

运行结果示例:

相关推荐

  1. qt-信号

    2024-06-15 04:02:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-15 04:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-15 04:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-15 04:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-15 04:02:03       18 阅读

热门阅读

  1. m2_python字符串-索引与切片

    2024-06-15 04:02:03       7 阅读
  2. Android10 动态修改开机动画(二)设置分区权限

    2024-06-15 04:02:03       10 阅读
  3. 【xilinx】使用vivado编译中methodology的相关介绍

    2024-06-15 04:02:03       11 阅读
  4. Spring IOC 容器的构建流程?

    2024-06-15 04:02:03       9 阅读
  5. (27)ADC接口--->(002)FPGA实现AD7606接口

    2024-06-15 04:02:03       7 阅读
  6. c++_0基础_讲解1 认识c++

    2024-06-15 04:02:03       9 阅读