Qt实现一个登录界面及工具集界面UI

程序功能

Qt实现一个登录界面与工具集界面,包含头像更改,界面换肤, 登录密码的密文输入与显示输入切换,用户名记忆与密码记忆(仅界面功能未定义),边角小按钮功能预留;工具集界面仅实现UI包含,界面换肤,本地视频播放,截图等操作,具体见截图。

界面截图

登录界面

在这里插入图片描述
在这里插入图片描述

工具集界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序源码

登录界面

头文件:

#ifndef LOGINPAGE_H
#define LOGINPAGE_H#include <QWidget>
#include <QIcon>
#include "additionaltools.h"class QAction;
class QPalette;
class QPixmap;namespace Ui {
class LoginPage;
}class LoginPage : public QWidget
{Q_OBJECTpublic:explicit LoginPage(QWidget *parent = 0);~LoginPage();
public slots:void closePage();
private slots:void on_skinBtn_clicked();void on_headShotBtn_clicked();void on_loginButton_clicked();void showPasswdTriggerd(bool open);
signals:void userLogin();
private:Ui::LoginPage *ui;QString skinPicStr;QPixmap backgroundPix;QPalette backgroundPle;QAction *userImage;QAction *passwdImage;QAction *showPasswd;QString username;QString password;QIcon skinIcon;QIcon headShotIcon;QIcon toolsIcon;QIcon networkIcon;QString headShotPic;
public:AdditionalTools *ToosMain;
};#endif // LOGINPAGE_H

源文件:

#include "loginpage.h"
#include "ui_loginpage.h"
#include <QPixmap>
#include <QAction>
#include <QMessageBox>
#include <QPalette>
#include <QFileDialog>LoginPage::LoginPage(QWidget *parent) :QWidget(parent),ui(new Ui::LoginPage)
{ui->setupUi(this);this->setWindowTitle(tr("视频监控分析系统"));skinPicStr = ":/pic/images/LoginBg_one.jpg";backgroundPix.load(skinPicStr);backgroundPle.setBrush(QPalette::Window, QBrush(backgroundPix));setPalette(backgroundPle);headShotPic=":/pic/images/User.jpg";ui->label->setPixmap(QPixmap(headShotPic));ui->label->setScaledContents(true);userImage = new QAction(this);userImage->setIcon(QIcon(":/pic/images/userLoginPic.ico"));ui->userLineEdit->addAction(userImage, QLineEdit::LeadingPosition);passwdImage = new QAction(this);showPasswd = new QAction(this);showPasswd->setCheckable(true);passwdImage->setIcon(QIcon(":/pic/images/PasswordPic.ico"));showPasswd->setIcon(QIcon(":/pic/images/eye_open.png"));ui->passwdLineEdit->addAction(passwdImage, QLineEdit::LeadingPosition);ui->passwdLineEdit->addAction(showPasswd, QLineEdit::TrailingPosition);username = "login";password = "on666";connect(showPasswd, &QAction::triggered, this, &LoginPage::showPasswdTriggerd);
}LoginPage::~LoginPage()
{delete ui;
}void LoginPage::closePage()
{this->close();
}void LoginPage::on_skinBtn_clicked()
{if (skinPicStr == ":/pic/images/LoginBg_one.jpg") {skinPicStr = ":/pic/images/LoginBg_two.jpg";} else if (skinPicStr == ":/pic/images/LoginBg_two.jpg") {skinPicStr = ":/pic/images/LoginBg_one.jpg";}backgroundPix.load(skinPicStr);backgroundPle.setBrush(QPalette::Window, QBrush(backgroundPix));setPalette(backgroundPle);
}void LoginPage::on_headShotBtn_clicked()
{headShotPic = QFileDialog::getOpenFileName(this, "Open Picture", "/", "*");if (headShotPic.isEmpty()) {return;} else {ui->label->setPixmap(QPixmap(headShotPic));ui->label->setScaledContents(true);}
}void LoginPage::on_loginButton_clicked()
{if (ui->userLineEdit->text() == username && ui->passwdLineEdit->text() == password) {this->hide();emit userLogin();} else {QMessageBox::warning(this, tr("登录提示"), tr("用户名或密码有误,请重试。。。"));return;}
}void LoginPage::showPasswdTriggerd(bool open)
{if (open) {ui->passwdLineEdit->setEchoMode(QLineEdit::Normal);showPasswd->setIcon(QIcon(":/pic/images/eye_open.png"));} else {ui->passwdLineEdit->setEchoMode(QLineEdit::Password);showPasswd->setIcon(QIcon(":/pic/images/eye_close.png"));}
}

ui文件:
在这里插入图片描述

工具集界面

头文件:

#ifndef ADDITIONALTOOLS_H
#define ADDITIONALTOOLS_H#include <QWidget>class QPoint;namespace Ui {
class AdditionalTools;
}class AdditionalTools : public QWidget
{Q_OBJECTpublic:explicit AdditionalTools(QWidget *parent = 0);~AdditionalTools();protected:void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);
signals:void closeWindow();
private slots:void on_SkinToolBtn_clicked();void on_closeBtn_clicked();public slots:void receiveLogin();
private:Ui::AdditionalTools *ui;QPoint mouseCoordinate;    // 鼠标当前坐标bool mousePressed;QString backgroundPic;
};

源文件:

#include "additionaltools.h"
#include "ui_additionaltools.h"
#include <QPoint>
#include <QMouseEvent>AdditionalTools::AdditionalTools(QWidget *parent) :QWidget(parent),ui(new Ui::AdditionalTools),mousePressed(false)
{ui->setupUi(this);this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);backgroundPic = "ToolsBg2.jpg";
}AdditionalTools::~AdditionalTools()
{delete ui;
}void AdditionalTools::mouseMoveEvent(QMouseEvent *event)
{if(mousePressed && (event->buttons() && Qt::LeftButton)) {   // &&表示仅当左键按下时,结果为真,==表示无论哪个键按下,结果均为真this->move(event->globalPos() - mouseCoordinate);event->accept();}
}void AdditionalTools::mousePressEvent(QMouseEvent *event)
{if (event->button() == Qt::LeftButton) {mousePressed = true;mouseCoordinate = event->globalPos() - this->pos();event->accept();}
}void AdditionalTools::mouseReleaseEvent(QMouseEvent *event)
{Q_UNUSED(event)mousePressed=false;
}void AdditionalTools::on_SkinToolBtn_clicked()
{if (backgroundPic == "ToolsBg1.jpg") {backgroundPic = "ToolsBg2.jpg";} else if (backgroundPic == "ToolsBg2.jpg") {backgroundPic = "ToolsBg3.jpg";} else if (backgroundPic == "ToolsBg3.jpg") {backgroundPic = "ToolsBg4.jpg";} else if (backgroundPic == "ToolsBg4.jpg") {backgroundPic = "ToolsBg5.jpg";} else if (backgroundPic == "ToolsBg5.jpg") {backgroundPic = "ToolsBg6.jpg";} else if (backgroundPic == "ToolsBg6.jpg") {backgroundPic = "ToolsBg7.jpg";} else if (backgroundPic == "ToolsBg7.jpg") {backgroundPic = "ToolsBg8.jpg";} else if (backgroundPic == "ToolsBg8.jpg") {backgroundPic = "ToolsBg1.jpg";}QString qssStyle = QString("QWidget#subWidget{background-image: url(:/pic/images/%1);}").arg(backgroundPic);qssStyle += "QToolButton{color:#E7ECF0;background-color:rgba(0,0,0,0);}";this->setStyleSheet(qssStyle);
}void AdditionalTools::receiveLogin()
{this->show();emit closeWindow();
}void AdditionalTools::on_closeBtn_clicked()
{this->close();exit(0);
}

ui文件:
在这里插入图片描述
mian函数:

#include "loginpage.h"
#include <QApplication>
#include <QObject>int main(int argc, char *argv[])
{QApplication a(argc, argv);AdditionalTools mainTools;LoginPage login;login.show();QObject::connect(&login, &LoginPage::userLogin, &mainTools, &AdditionalTools::receiveLogin);QObject::connect(&mainTools, &AdditionalTools::closeWindow, &login, &LoginPage::closePage);return a.exec();
}

# 完整源码链接
https://download.csdn.net/download/qq_44896246/87402028

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37673.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UI界面编写(仿QQ聊天界面)

UI界面编写实战 这里我们模拟QQ聊天的主界面&#xff0c;编写一个简单的聊天界面。 项目描述 首先搭建我们的主界面&#xff0c;在最上边放一个标题栏&#xff0c;然后是一个ListView&#xff0c;用于展示发送的消息&#xff0c;最下边是选择要发送的表情&#xff0c;内容类…

QT登录界面设计及跳转主界面

文章目录 QT登录界面设计及跳转主界面界面样式创建流程界面设计所需控件界面外观设计添加底色设置密码输入框以密文显示&#xff1a; 程序设计取消按钮登录按钮 注&#xff1a; QT登录界面设计及跳转主界面 界面样式 先贴图 创建流程 首先创建界面&#xff1a; 选择无按钮…

开源一个ChatGPT AI角色对话项目

最近对AI很感兴趣&#xff0c;花了几天时间学习Android&#xff0c;尝试着结合Bmob AI SDK&#xff0c;做了一个具有角色功能的开源项目。可能是因为目前这类型的项目还比较少&#xff0c;发布之后&#xff0c;竟然还获得了几个star和fork。对于一个Android小白来说&#xff0c…

公司宣传片拍摄文案怎么写?

公司宣传片拍摄文案怎么写&#xff1f; 如今的公司宣传片拍摄已成为趋势&#xff0c;很多的企业采用宣传片的方式进行企业的宣传推广。在进行宣传片制作时&#xff0c;宣传片制作需求不同&#xff0c;宣传片制作内容也不同。一般宣传片制作内容是整个宣传片制作的关键&#xf…

短视频拍摄脚本怎么写

优质的短视频每一个镜头都经过精心设计&#xff0c;镜头的设计就是利用镜头脚本&#xff0c;提前设想好一切想要的镜头效果和画面&#xff0c;最终作品才能一气呵成的呈现出来&#xff0c;接下来就来分析一下短视频拍摄脚本怎么写&#xff0c;短视频拍摄脚本有什么用? 短视频脚…

微信小程序:调用API接口

首先去果创云之类的API调用的网站找到你想调用的API 以大学查询接口为例 复制API的接口&#xff0c;然后要现在第一个&#xff1f;前面加上appkey&#xff0c;然后name可以换成变量&#xff0c;最后的10是显示的条数&#xff0c;也可以改。 最后效果是可以查询你想要查询的学校…

微信小程序开发调用接口

今天我们自己调用自己商城中的接口 以下是简单的示例 这是自己的目录结构&#xff0c;我选择的是index1来开发 首先在 index.js中想写逻辑代码 其中page里面的data里面是前台展示时的一些数据&#xff0c;而onload里面是调用的接口&#xff0c;调用的方式为get调用&#xff…

微信小程序调用api接口实例

页面效果&#xff1a; 1、首先在微信开发者工具中开启http域名 2、然后回到开发者工具中&#xff0c;找到详情》项目配置&#xff0c;进行刷新或者重新编译 3、在index.wxml页面中写一个button: <view><button bindTap"test">测试</button> <…

GPT-4 发布:在考试中击败 90% 的人类;谷歌开放大语言模型 PaLM API;FireFox 111 发布|极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&…

.net应用程序和TW3的ADS之间通讯

Beckhoff ADS (Automation DeviceSpecification)提供一个应用程序之间互相通信的接口&#xff0c;在TW3系统中&#xff0c;TwinCAT PLC&#xff0c;TwinCAT NC等被设计成虚拟的自动化设备&#xff0c;类似于实际的物理设备与设备之间通过基于TCP协议的路由来交换信息&#xff0…

基于CTP的期货集中管理系统之登录篇

上一篇是说要做这个管理系统&#xff0c;还没开始做&#xff0c;就头皮发麻了。想想要实现那么多功能&#xff0c;已经想放弃了。但是呢&#xff0c;我们是日拱一卒的时间主义者&#xff0c;小小的抵触情绪是无法打到我们的。 前端使用VUE,后端使用C来做分布式交易管理总控系统…

仿QQ即时通信系统

这学期学了网络编程&#xff0c;课设是让做一个通信系统&#xff0c;就模仿腾讯的产品设计一个仿QQ的通信系统。PS&#xff1a;用的时候&#xff0c;背景可以改一下&#xff0c;XX公司需要一个内部通信系统… 话不多说&#xff0c;先上图片&#xff0c;再慢慢讲原理吧。 效果示…

基于nchan打造百万用户的聊天室

大家好&#xff0c;我是烤鸭&#xff1a; 这次介绍下nchan&#xff0c;nginx的一个module。 nchan 源码: https://github.com/slact/nchan 官网: https://nchan.io/ nginx 配置说明文档: https://nchan.io/documents/nginxconf2016-slides.pdf 测试环境搭建 4 台linux cent…

基于MT5的沪深股票回测二 导入历史数据

回测的基础是是历史数据 以导入日线数据为例 1.打开交易品种 2. 找到目标合约 3.选择要处理的数据周期&#xff0c;日线选择daily 然后导入处理后的日K线数据 注意历史数据需要符合MT5的数据格式 此次有一个不是bug的显示&#xff0c;最多显示2000条记录&#xff0c;实际更多…

探索 Google Bard 的 10 大令人兴奋的新功能

这家科技巨头开发的人工智能聊天机器人 Google Bard 最初发布时,收到的评价平平。然而,随着最近在 Google I/O 2023 开发者大会上发布其改进版本,Google Bard 的情况发生了重大变化。全新改进的 Google Bard AI 具有许多令人兴奋的功能。让我们仔细看看谷歌吟游诗人的特点:…

万众瞩目,谷歌的反击来了!全新PaLM 2反超GPT-4,办公全家桶炸裂升级,Bard史诗进化...

Datawhale干货 最新&#xff1a;谷歌 PaLM 2&#xff0c;来源&#xff1a;量子位 万众瞩目&#xff0c;谷歌的反击来了。 现在&#xff0c;谷歌搜索终于要加入AI对话功能了&#xff0c;排队通道已经开放。 当然这还只是第一步。 大的还在后面&#xff1a; 全新大语言模型PaLM …

LaTeX插入图片

基本语法 常用选项[htbp]是浮动格式&#xff08;参考《LaTeX2e插图指南》16.2节和《Ishort》3.9节&#xff09;&#xff1a; 『h』当前位置。将图形放置在正文文本中给出该图形环境的地方。如果本页所剩的页面不够&#xff0c;这一参数将不起作用。『t』顶部。将图形放置在页…

chatgpt赋能python:Python抓取电脑应用软件数据

Python抓取电脑应用软件数据 随着互联网技术的不断发展&#xff0c;我们的生活方式也在发生着巨大变化&#xff0c;如今&#xff0c;我们已经可以依靠计算机应用软件对生活的各个方面进行掌控。而如何获取这些软件的数据&#xff0c;以及对这些数据进行分析&#xff0c;也成为…

chatgpt赋能python:Python程序如何变成电脑程序

Python程序如何变成电脑程序 简介 Python是一种高级编程语言&#xff0c;它在数据科学、人工智能、Web开发、机器学习、AI等领域非常流行。在Python中编写的程序需要转化为计算机程序才能执行。在这篇文章中&#xff0c;我们将解释Python编写的程序如何变成电脑程序。 什么是…

chatgpt赋能python:Python可以入侵别人电脑吗?

Python可以入侵别人电脑吗&#xff1f; Python自从诞生以来便一直以来备受关注&#xff0c;其简单易学、高效实用的特点让无数人喜爱并成为了开发人员的首选编程语言。但是&#xff0c;你可能会想知道&#xff1a;Python能够入侵别人电脑吗&#xff1f;今天我们就来探讨一下这…