QSS/QFrame/connect/两个窗口界面的连接/窗口的优化

制作一个应用程序的登录界面,并对界面进行相关优化
要求:
1.qss实现 
2.需要有图层的叠加(QFrame) 2.需要有图层的叠加(QFrame)
3.设置纯争窗口后,有关闭等窗口功能。 3.设置纯争窗口后,有关闭等窗口功能.
4.如果账号密码正确,则实现登录界面关闭,另一个应用界面显示。
第一个窗口界面:
widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("Shanghai");//设置窗口标题
    this->setWindowIcon(QIcon(":/Logo/shangHai.jpg"));//设置窗口图标
    this->setWindowFlag(Qt::FramelessWindowHint);//隐藏窗口图标
    this->setAttribute(Qt::WA_TranslucentBackground);//去除多余空白部分
    connect(ui->pushButton_2,&QPushButton::clicked,this,&Widget::pushButton_2);//基于QT5版本,手动连接信号与槽,关闭按钮功能实现
    connect(ui->pushButton_3,&QPushButton::clicked,this,&Widget::pushButton_3);//基于QT5版本,手动连接信号与槽,最小化按钮功能实现
    connect(ui->lineEdit_2,&QLineEdit::editingFinished,this,&Widget::lineEdit_2);//获取密码,并进行相应处理

}

Widget::~Widget()
{
    delete ui;
}

void Widget::pushButton_2()
{
    this->close();//关闭窗口
}

void Widget::pushButton_3()
{
    this->showMinimized();//最小化
}
void Widget::lineEdit_2()
{
    if(ui->lineEdit_3->text()=="admin"&&ui->lineEdit_2->text()=="123456"){//判断登录账号密码是否一致
        this->close();//关闭窗口
        emit widet_singnal();//激活信号函数,跳转下一个窗口
    }else{
        QMessageBox::information(this, "登录失败","");
        //对话框提示登录失败
        ui->lineEdit_2->clear();
        ui->lineEdit_3->clear();//清空行编辑器

    }
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
public slots:
    void pushButton_2();//x按钮槽函数
    void pushButton_3();//最小化槽函数
    void lineEdit_2();//密码行功能槽函数
signals:
    void widet_singnal();//定义信号函数,用于连接两个窗口
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

编辑样式表代码:
 

*{/*"*"是通配符,匹配所有*/
	background-color: rgb(255, 255, 255);
	color: rgba(255, 255, 255, 120);
}
QFrame#frame{/*“#”也是通配符,匹配一个*/
	border-image: url(:/Logo/shanChuan.jpg);
}
#frame_2{
	background-color: rgba(179, 179, 179, 120);
}
#label{
	
	background-color: rgba(71, 71, 71, 120);
	border-radius:20px;
}
#label_2{
	background:transparent; /*完全透明*/
}
#lineEdit_2{
	background:transparent; /*完全透明*/
	border:none;
	border-bottom:1px solid rgba(255, 255, 255, 120);/*保留底部边框*/
	font: 10pt "等线";
	color: rgba(255, 255, 255, 120);
}
#lineEdit_3{
	background:transparent; /*完全透明*/
	border:none;
	font: 10pt "等线";
	border-bottom:1px solid rgba(255, 255, 255, 120);
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}
#pushButton{
	font: 10pt "等线";
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(58, 130, 205, 255), stop:1 rgba(255, 255, 255, 255));
	color: rgba(255, 255, 255, 120);
	border:none;
	border-radius:5px;
}
#pushButton:hover{/*鼠标移动*/
	font: 10pt "等线";
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(80, 130, 205, 255), stop:1 rgba(255, 255, 255, 255));
	color: rgba(255, 255, 255, 120);
	border:none;
	border-radius:5px;
}
#pushButton:pressed{/*鼠标按下特效*/
	font: 10pt "等线";
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(58, 130, 205, 255), stop:1 rgba(255, 255, 255, 255));
	color: rgba(255, 255, 255, 120);
	border:none;
	border-radius:5px;
	padding-top:5px;/*顶部抖动*/
    padding-left:5px;
}
#pushButton_2{
	background:transparent; /*完全透明*/
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}
#pushButton_2:hover{
	background-color: rgb(255, 0, 0);
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}
#pushButton_3{
	background:transparent; /*完全透明*/
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}
#pushButton_3:hover{
	background-color: rgb(60, 239, 255);
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}
#pushButton_4{
	background:transparent; /*完全透明*/
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}
#pushButton_4:hover{
	background-color: rgb(60, 239, 255);
	color: rgba(255, 255, 255, 120);
	font: 10pt "等线";
}

另外一个窗口界面

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    this->setWindowTitle("Shanghai");//设置窗口标题
    this->setWindowIcon(QIcon(":/Logo/shangHai.jpg"));//设置窗口图标
    this->setWindowFlag(Qt::FramelessWindowHint);//隐藏窗口图标
    QMovie *mv=new QMovie(":/Logo/R-C.gif");//设置一个动态图对象指针接收动态图
    ui->label->setMovie(mv);//将动图设置到lab1标签中
    mv->start();//让动图动起来
    ui->label->setScaledContents(true);//让图片自适应标签设置大小

}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::dialog_slots()
{
    this->show();//打开另一个窗口
}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QIcon>
#include <QMovie>
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = nullptr);
    ~Dialog();
public slots:
    void dialog_slots();//定义槽函数,用于两个窗口建立连接

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H

main.cpp

#include "widget.h"
#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;//实例化一个窗口
    w.show();
    Dialog d;//实例化另一个窗口
    QObject::connect(&w,&Widget::widet_singnal,&d,&Dialog::dialog_slots);//两个窗口建立连接
    return a.exec();
}

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值