当前位置: 首页 > news >正文

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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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_OBJECTpublic: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();
}

相关文章:

  • DoIP——step2:车辆发现
  • 内网穿透的原理:实现远程访问的技术揭秘
  • Aeron:两个代理之间的单向IPC(One-way IPC between two agents)
  • visual studio下载安装
  • 【MySQL基础随缘更系列】AB复制
  • 你是否感受到AI就在身边?
  • Leetcode - 132双周赛
  • 海康充电桩报文校验TCP校验和
  • 刷题——链表中倒数最后k个结点
  • 什么是隐马尔可夫模型?
  • 【第5章】Stable Diffusion大模型(简介/两种版本/安装/模型推荐/使用方式)ComfyUI基础入门教程
  • 【Vue3】使用v-model实现父子组件通信(常用在组件封装规范中)
  • Part 4.2 背包动态规划
  • 适用于 macOS 的最佳免费数据恢复软件
  • 浏览器必装插件推荐:最新版Simple Allow Copy,解除网页复制限制!
  • ES6系列(二)变量的解构赋值
  • iOS 系统授权开发
  • Java 网络编程(2):UDP 的使用
  • Java 最常见的 200+ 面试题:面试必备
  • Kibana配置logstash,报表一体化
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Lucene解析 - 基本概念
  • overflow: hidden IE7无效
  • PAT A1050
  • React-生命周期杂记
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 复习Javascript专题(四):js中的深浅拷贝
  • 欢迎参加第二届中国游戏开发者大会
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 简单实现一个textarea自适应高度
  • 开源地图数据可视化库——mapnik
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 数组大概知多少
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.proxy和$.extend
  • (1) caustics\
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (9)STL算法之逆转旋转
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (笔试题)合法字符串
  • (九十四)函数和二维数组
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)EXC_BREAKPOINT僵尸错误
  • ./configure、make、make install 命令
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .Net Core 微服务之Consul(二)-集群搭建
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • @Responsebody与@RequestBody