文章目录
- QQ登录界面
- 源码分享
- 演示图
- 代码分析
QQ登录界面
源码分享
链接:https://pan.baidu.com/s/1v_J4WQjZoSAoMrIpx88PbA
提取码:qwer
记得把图片放入Debug文件
演示图
代码分析
已注释 较为详细
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QCheckBox>
#include <QRadioButton>
#include <QPushButton>
#include <QCheckBox>
class Widget : public QWidget
{
Q_OBJECT
public:
//头像
QLabel *tx;
//行编辑框
QLineEdit *put1;
QLineEdit *put2;
//单选按钮
QRadioButton *P1;
//登录
QPushButton *DL;
//扫码登录,更多选项
QPushButton *X1;
QPushButton *X2;
//显示密码
QCheckBox *Xs;
Widget(QWidget *parent = nullptr);
~Widget();
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QGridLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//网格布局
QGridLayout *QQ = new QGridLayout ;
//设置背景
this->resize(200,380);
QPalette pa(this->palette());//创建一个QPalette对象pa,并使用当前窗口部件的调色板(palette)作为构造函数的参数。QPalette用于定义窗口部件的颜色和背景。
QImage img = QImage("jm.png");//创建图片
img = img.scaled(this->size());//设置图片大小与界面匹配
QBrush *pic = new QBrush(img);//创建一个QBrush对象pic,并使用缩放后的图像img作为构造函数的参数。QBrush用于绘制背景。
pa.setBrush(QPalette::Window, *pic);//将pic设置为QPalette的背景刷子(QBrush),并将其应用于窗口的背景,即将窗口的背景刷子设置为pic。
this->setAutoFillBackground(true);//启用窗口自动填充背景的功能,以确保窗口能够显示背景。
this->setPalette(pa);//将之前处理好的QPalette对象pa应用于当前窗口部件,即将窗口的调色板设置为pa,从而实现背景的设定。
//头像
tx = new QLabel("头像");
tx->setScaledContents(true); //设置标签自动缩放上面的图片
tx->setPixmap(QPixmap("qq.png")); //标签显示图片
tx->setFixedSize(120, 120);
//密码输入
put1 = new QLineEdit;
put1->setPlaceholderText(QStringLiteral("QQ号码/手机/邮箱"));
put2 = new QLineEdit;
put2->setPlaceholderText(QStringLiteral("输入QQ密码"));
//知悉
P1 = new QRadioButton("已阅读并同意服务协议和QQ隐私保护指引");
//登录
DL = new QPushButton("登录");
DL->setMinimumSize(50, 50);
DL->setStyleSheet("QPushButton{font:13px;");
DL->setStyleSheet("color: rgb(255, 255, 255); background-color: rgb(166, 219, 254);");
//扫码登录,更多选项
X1 = new QPushButton("扫码登陆");
X1->setMinimumSize(30, 30); //设置最小尺寸
X1->setFlat(true); //设置无边框
X2 = new QPushButton("更多选项");
X2->setMinimumSize(30, 30); //设置最小尺寸
X2->setFlat(true);
//显示密码
Xs = new QCheckBox("显示密码");
put2->setEchoMode(QLineEdit::Password);
connect(Xs, &QCheckBox::clicked, [&](bool x){
put2->setEchoMode(x?QLineEdit::Normal:QLineEdit::Password);
});
QQ->addWidget(tx,0,1,2,2,Qt::AlignHCenter | Qt::AlignVCenter);
QQ->addWidget(put1,1,1,1,3);
QQ->addWidget(put2,2,1,1,3);
QQ->addWidget(Xs,2,2,1,2,Qt::AlignRight | Qt::AlignVCenter);
QQ->addWidget(P1,4,1,1,2);
QQ->addWidget(DL,5,1,1,4);
QQ->addWidget(X1,6,1,1,1);
QQ->addWidget(X2,6,2,1,1);
this->setWindowTitle("QQ");
setLayout(QQ);
}
Widget::~Widget()
{
}