QT记事本+登陆界面的简单实现

主体头文件

#ifndef JSB_H
#define JSB_H#include <QMainWindow>
#include <QMenuBar>//菜单栏
#include <QToolBar>//工具栏
#include <QStatusBar>//状态栏
#include <QTextEdit>//文本
#include <QLabel>//标签
#include <QDebug>//打印
#include <QDateTime>//获取当前时间
#include <QDesktopServices>//桌面服务
#include <QUrl>//资源定位
#include "ipv.h"
#include <QFileDialog>//文件对话框
#include <QColorDialog>//颜色对话框
#include <QFontDialog>//字体对话框
#include <QTextStream>//文本流
#include <QMessageBox>
#include <QCloseEvent>
#include <QDebug>
class JSB : public QMainWindow
{Q_OBJECTpublic:JSB(QWidget *parent = nullptr);~JSB();public slots:void open_slot();void new_slot();void save_slot();void exit_slot();void copy_slot();void patse_slot();void cut_slot();void redo_slot();void undo_slot();void time_slot();void color_slot();void font_slot();void about_slot();void web_slot();void ipv_slot();void closeEvent(QCloseEvent *event);private://菜单栏QMenuBar * bar=NULL;//文件菜单QMenu *File = NULL;//打开QAction *Open = NULL;//新建QAction *New = NULL;//保存QAction *Save = NULL;//退出QAction *Exit = NULL;//编辑菜单QMenu *Edit = NULL;//恢复QAction *Redo = NULL;//撤销QAction *Undo = NULL;//复制QAction *Copy = NULL;//粘贴QAction *Patse = NULL;//剪切QAction *Cut = NULL;//工具菜单QMenu * Tool = NULL;//时间QAction *Time = NULL;//格式菜单QMenu * ForMat = NULL;//颜色QAction *Color = NULL;//字体QAction *Font = NULL;//帮助QMenu *Help = NULL;//关于QAction *About = NULL;//官网QAction *Web = NULL;//版本QAction *IPv = NULL;//工具栏QToolBar *ToolBar = NULL;//状态栏QStatusBar *staBar = NULL;//文本QTextEdit *edit = NULL;};
#endif // JSB_H

主体的函数实现

#include "jsb.h"JSB::JSB(QWidget *parent): QMainWindow(parent)
{//设置窗口大小this->resize(600,600);//设置窗口文本this->setWindowTitle("记事本");//设置窗口图标this->setWindowIcon(QIcon(":/image/Jsb.png"));//初始化菜单this->bar = menuBar();//指定父类bar->setParent(this);//将菜单栏放入到窗口setMenuBar(bar);//创建文件菜单this->File = bar->addMenu("文件(&F)");//菜单项this->New = File->addAction("新建");//快捷键this->New->setShortcut(tr("Ctrl+N"));//分隔符this->File->addSeparator();//新建图标this->New->setIcon(QIcon(":/image/New.png"));connect(New,&QAction::triggered,this,&JSB::new_slot);this->Open = File->addAction("打开");//打开快捷键this->Open->setShortcut(tr("Ctrl+O"));//图标this->Open->setIcon(QIcon(":/image/Open.png"));connect(Open,&QAction::triggered,this,&JSB::open_slot);this->Save = File->addAction("保存");this->Save->setShortcut(tr("Ctrl+S"));this->Save->setIcon(QIcon(":/image/Save.png"));connect(Save,&QAction::triggered,this,&JSB::save_slot);//分隔符this->File->addSeparator();this->Exit = File->addAction("退出");this->Exit->setShortcut(tr("Ctrl+Q"));this->Exit->setIcon(QIcon(":/image/Exit.png"));connect(Exit,&QAction::triggered,this,&JSB::exit_slot);//创建编辑菜单this->Edit = bar->addMenu("编辑(&E)");this->Redo = Edit->addAction("恢复");this->Redo->setShortcut(tr("Ctrl+R"));this->Redo->setIcon(QIcon(":/image/Redo.png"));connect(Redo,&QAction::triggered,this,&JSB::redo_slot);this->Undo = Edit->addAction("撤销");this->Undo->setShortcut(tr("Ctrl+U"));this->Undo->setIcon(QIcon(":/image/Undo.png"));//分隔符this->Edit->addSeparator();connect(Undo,&QAction::triggered,this,&JSB::undo_slot);this->Copy = Edit->addAction("复制");this->Copy->setShortcut(tr("Ctrl+C"));this->Copy->setIcon(QIcon(":/image/Copy.png"));connect(Copy,&QAction::triggered,this,&JSB::copy_slot);this->Patse = Edit->addAction("粘贴");this->Patse->setShortcut(tr("Ctrl+V"));this->Patse->setIcon(QIcon(":/image/Paste.png"));connect(Patse,&QAction::triggered,this,&JSB::patse_slot);this->Cut = Edit->addAction("剪切");this->Cut->setShortcut(tr("Ctrl+X"));this->Cut->setIcon(QIcon(":/image/Cut.png"));connect(Cut,&QAction::triggered,this,&JSB::cut_slot);//创建工具菜单this->Tool = bar->addMenu("工具(&T)");this->Time = Tool->addAction("时间");this->Time->setShortcut(tr("Ctrl+A"));this->Time->setIcon(QIcon(":/image/time.png"));connect(Time,&QAction::triggered,this,&JSB::time_slot);//创建格式菜单this->ForMat = bar->addMenu("格式(&M)");this->Color = ForMat->addAction("颜色");this->Color->setShortcut(tr("Ctrl+Alt+C"));this->Color->setIcon(QIcon(":/image/Color (5).png"));connect(Color,&QAction::triggered,this,&JSB::color_slot);this->Font = ForMat->addAction("字体");this->Font->setShortcut(tr("Ctrl+Alt+F"));this->Font->setIcon(QIcon(":/image/Font (2).png"));connect(Font,&QAction::triggered,this,&JSB::font_slot);//创建帮助菜单this->Help = bar->addMenu("帮助(&H)");this->About = Help->addAction("关于");this->About->setShortcut(tr("Ctrl+Shift+A"));this->About->setIcon(QIcon(":/image/About.png"));this->Web = Help->addAction("官网");this->Web->setShortcut(tr("Ctrl+Shift+W"));this->Web->setIcon(QIcon(":/image/web.png"));connect(Web,&QAction::triggered,this,&JSB::web_slot);this->IPv = Help->addAction("版本");this->IPv->setShortcut(tr("Ctrl+Shift+I"));this->IPv->setIcon(QIcon(":/image/Window.png"));connect(IPv,&QAction::triggered,this,&JSB::ipv_slot);//工具栏this->ToolBar = new QToolBar;this->ToolBar->setParent(this);addToolBar(ToolBar);this->ToolBar->setMovable(false);this->ToolBar->addAction(Open);this->ToolBar->addAction(Exit);this->ToolBar->addSeparator();this->ToolBar->addAction(Redo);this->ToolBar->addAction(Undo);this->ToolBar->addSeparator();this->ToolBar->addAction(Color);this->ToolBar->addAction(Font);this->ToolBar->addSeparator();this->ToolBar->addAction(Web);this->ToolBar->addAction(IPv);//状态栏this->staBar = statusBar();staBar->setParent(this);setStatusBar(staBar);//创建标签QLabel *label = new QLabel("UTF-8",this);staBar->addWidget(label);//文本this->edit = new QTextEdit(this);setCentralWidget(edit);//设置默认字体QFont font;font.setFamily("楷体");font.setPixelSize(20);font.setBold(true);this->edit->setFont(font);//设置默认颜色QColor color;color.setRed(100);this->edit->setTextColor(color);}JSB::~JSB()
{
}void JSB::closeEvent(QCloseEvent *event){if(this->edit->document()->isModified()){QMessageBox msgBox;msgBox.setText("内容以改变.");msgBox.setInformativeText("是否保存新内容?");msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);msgBox.setButtonText(QMessageBox::Save,"保存");msgBox.setButtonText(QMessageBox::Discard,"取消");msgBox.setButtonText(QMessageBox::Cancel,"不保存");msgBox.setDefaultButton(QMessageBox::Save);int ret = msgBox.exec();switch (ret) {case QMessageBox::Save:// Save was clickedthis->save_slot();break;case QMessageBox::Discard:// Don't Save was clickedevent->ignore();break;case QMessageBox::Cancel:// Cancel was clickedevent->accept();break;default:// should never be reachedbreak;}}else {event->accept();}}
void JSB::open_slot()
{QString filename = QFileDialog::getOpenFileName(this,"打开",".","*.*");QFile *file = new QFile;//设置打开的路径file->setFileName(filename);//只读bool ok = file->open(QIODevice::ReadOnly);if(ok){//问件指针关联文本流QTextStream stream(file);//UTF-8stream.setCodec("UTF-8");this->edit->setText(stream.readAll());//关闭文件file->close();delete file;//获取当前光标的位置QTextCursor cursor = this->edit->textCursor();//将光标移动到末尾cursor.movePosition(QTextCursor::End);//将设置好的光标放到edit中this->edit->setTextCursor(cursor);}}
void JSB::new_slot()
{JSB *w = new JSB;w->show();this->close();
}
void JSB::save_slot()
{QString filename = QFileDialog::getSaveFileName(this,"保存",".","*.*");QFile *file = new QFile;//设置打开的路径file->setFileName(filename);//只写bool ok = file->open(QIODevice::WriteOnly);if(ok){//文件指针关联文本流QTextStream stream(file);//UTF-8stream.setCodec("UTF-8");//QString str = this->edit->toPlainText();QString str = this->edit->toHtml();stream<<str;//关闭文件file->close();delete file;//清空editthis->edit->clear();}
}
void JSB::exit_slot()
{this->close();
}void JSB::copy_slot()
{this->edit->copy();
}
void JSB::patse_slot()
{this->edit->paste();
}
void JSB::cut_slot()
{this->edit->cut();
}
void JSB::redo_slot()
{this->edit->redo();
}
void JSB::undo_slot()
{this->edit->undo();
}void JSB::time_slot()
{QDateTime Time = QDateTime::currentDateTime();QString str = Time.toString("yyyy-MM-dd hh:mm:ss");this->edit->append(str);
}void JSB::color_slot()
{QColor color = QColorDialog::getColor(Qt::red,this,"颜色");if(color.isValid()){this->edit->setTextColor(color);}
}
void JSB::font_slot()
{bool ok;QFont font = QFontDialog::getFont(&ok,QFont("楷体",18,5,true),this,"字体");if(ok){this->edit->setFont(font);}
}void JSB::about_slot()
{}
void JSB::web_slot()
{QDesktopServices::openUrl(QUrl("https://blog.csdn.net/m0_72847002?spm=1010.2135.3001.5421"));
}
void JSB::ipv_slot()
{IPV * ipv = new IPV;ipv->show();}

登录功能的头文件

#ifndef LOGIN_H
#define LOGIN_H#include <QWidget>namespace Ui {
class Login;
}class Login : public QWidget
{Q_OBJECTpublic:explicit Login(QWidget *parent = nullptr);~Login();
public slots:void login();private:Ui::Login *ui;
};#endif // LOGIN_H

登录功能的函数实现

#include "login.h"
#include "ui_login.h"
#include "jsb.h"
Login::Login(QWidget *parent) :QWidget(parent),ui(new Ui::Login)
{ui->setupUi(this);this->setWindowTitle("登录");this->setWindowIcon(QIcon(":/image/Jsb3.png"));connect(ui->dl,&QPushButton::clicked,this,&Login::login);}Login::~Login()
{delete ui;
}void Login::login()
{if(ui->id->text() == "1" && ui->passwd->text()=="1"){JSB *jsb = new JSB;jsb->show();this->close();}
}

登录功能的UI绘制

在这里插入图片描述

版本展示头文件

#ifndef IPV_H
#define IPV_H#include <QWidget>
#include <QMovie>
namespace Ui {
class IPV;
}class IPV : public QWidget
{Q_OBJECTpublic:explicit IPV(QWidget *parent = nullptr);~IPV();private:Ui::IPV *ui;
};#endif // IPV_H

版本号功能实现

#include "ipv.h"
#include "ui_ipv.h"IPV::IPV(QWidget *parent) :QWidget(parent),ui(new Ui::IPV)
{ui->setupUi(this);QMovie *movie = new QMovie(":/image/q.gif");ui->label->setMovie(movie);movie->start();}IPV::~IPV()
{delete ui;
}

版本号界面UI绘制

在这里插入图片描述

效果图

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

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

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

相关文章

Android之MediaCodec::PostAndAwaitResponse消息原理(四十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

企业内部安全与风控管理图解

企业内部安全说外部安全&#xff0c;企业领导者都非常关注&#xff0c;由于各方面原因&#xff0c;。。。力不从心&#xff0c;妥协&#xff01; 方向&#xff1a; 1、制度 结合企业实情&#xff0c;编制企业安全管理制度 2、硬件 处理常规硬件外观&#xff0c;加壳与锁定、…

【力扣每日一题】2023.9.10 打家劫舍Ⅳ

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目翻译有些烂&#xff0c;我来二次翻译一下&#xff0c;找出数组中k个两两互不相邻的数&#xff0c;求出它们的最大值。要求最大值尽可…

Mac 错误zsh: command not found: brew解决方法

打开iterm或其他shell终端&#xff0c;执行命令&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 选择下载brew的源&#xff0c;输入1~6任意都行 根据提示输入Y及开机密码 最后执行&#xff1a;source ~/.z…

ChatGLM 大模型应用构建 Prompt 工程

文章目录 一、大模型简介1.1 大模型基础知识1.2 大模型分类 二、如何构建大模型应用2.1 To B、To C场景应用区别2.2 大模型在To B场景中的应用原则2.3 大模型应用技巧2.3.1 大模型应用技巧2.3.2 大模型的应用方法2.3.3 案例&#xff1a;车险问答系统 三、指令工程&#xff08;p…

macOS 中 Apple Distribution 与 Apple Development 证书不受信任解决方法

造成这个现象的原因是 Worldwide Developer Relations 中间关系证书缺失 我们只需要将相关证书下载并导入到「系统」级钥匙串即可 首先访问网站&#xff1a;https://www.apple.com/certificateauthority 下载右侧 Apple Intermediate Certificates 下方的如下证书 Develope…

安理【2022】

关键字&#xff1a; 出栈序列s2固定、快速排序2趟、next数组、二分查找比较次数log2n向上取整、 一、选择 二、填空 三、应用

ThreeJS-3D教学一基础场景创建

Three.js 是一个开源的 JS 3D 图形库&#xff0c;用于创建和展示高性能、交互式的 3D 图形场景。它建立在 WebGL 技术之上&#xff0c;并提供了丰富的功能和工具&#xff0c;使开发者可以轻松地构建令人惊叹的 3D 可视化效果。 Three.js 提供了一套完整的工具和 API&#xff0…

《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.25.14集群(多主多从)》

一、部署架构图 1、架构图如下所示: 2、部署流程图如下所示: 二、环境信息 1、资源下载基于外部etcd+部署容器版kubernetes1.25.14集群资源合集 2、部署规划主机名K8S版本系统版本内核版本IP地址备注k8s-master-121.25.14Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.12ma…

乐鑫科技全球首批支持蓝牙 Mesh Protocol 1.1 协议

乐鑫科技 (688018.SH) 非常高兴地宣布&#xff0c;其自研的蓝牙 Mesh 协议栈 ESP-BLE-MESH 现已支持最新蓝牙 Mesh Protocol 1.1 协议的全部功能&#xff0c;成为全球首批在蓝牙技术联盟 (Bluetooth SIG) 正式发布该协议之前支持该更新的公司之一。这意味着乐鑫在低功耗蓝牙无线…

CHATGPT中国免费网页版有哪些-CHATGPT中文版网页

CHATGPT中国免费网页版&#xff0c;一个强大的人工智能聊天机器人。如果你曾经感到困惑、寻求答案&#xff0c;或者需要一些灵感&#xff0c;那么CHATGPT国内网页版可能会成为你的好朋友。 CHATGPT国内免费网页版&#xff1a;你的多面“好朋友” 随着人工智能技术的不断发展&a…

【LeetCode热题100】--3.无重复字符的最长子串

3.无重复字符的最长子串 使用滑动窗口&#xff1a; 使用两个指针表示字符串中的某个子串&#xff08;或窗口&#xff09;的左右边界&#xff0c;其中左指针代表着枚举字串的起始位置&#xff0c;而右指针即为 r k r_k rk​在每一步操作中&#xff0c;我们会将左指针向右移动一…

4.开放-封闭原则

这个原则其实是有两个特征&#xff0c;一个是说‘对于扩展是开放的(Open for extension)&#xff0c;另一个是说‘对于更改是封闭的(Closed for modification)[ASD]。

kubevirt v1.1.0-alpha.0 offline deploy on kubernetes v1.23.17

文章目录 准备条件下载介质部署查看安装 virtctl 前天&#xff0c;kubevirt 更新了&#xff0c;尝鲜。 准备条件 二进制 Deploy Kubernetes v1.23.17 下载介质 export VERSION$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases | grep tag_name | grep -v…

MySQL 索引(二)

1. 不同存储引擎的索引结构 MySQL5.5版本之前默认采用的是MyISAM引擎&#xff0c;5.5之后默认采用的是Innodb引擎。 1.1. MyISAM存储引擎 MYD文件&#xff1a;数据文件&#xff0c;所有的数据保存在这个文件中。MYI文件 &#xff1a;索引文件。 如果要查询id 40的数据&…

开源分布式存储系统(HDFS、Ceph)架构分析

文章目录 中间控制节点架构-HDFSNameNode节点分析DataNode节点分析SecondNameNode节点分析Client分析 完全无中心架构-CephCeph Monitor分析Ceph OSD分析Ceph Manager分析Ceph Clients分析 小结HDFS优点缺点 Ceph优点缺点 参考 中间控制节点架构-HDFS 以HDFS&#xff08; Hado…

Buuctf web [SUCTF 2019]EasySQL

又是一道考察sql注入的题 1、起手试探 &#xff08;主要看看输入什么内容有正确的回显&#xff09; 1 0 1 1 # 发现只有在输入1的情况下有正常的回显,输入0或其他字符都没有回显&#xff0c;所以这题就要尝试堆叠注入了。 ps&#xff1a;&#xff08;如果想尝试其他注入方法…

多目标优化算法:基于非支配排序的海象优化算法(NSWOA)MATLAB

一、海象优化算法WOA 海象优化算法&#xff08;Walrus Optimization Algorithm&#xff0c;WOA&#xff09;由Trojovsk等人于2023年提出&#xff0c;该算法模拟海象的进食&#xff0c;迁移&#xff0c;逃跑和对抗捕食者的过程&#xff0c;WOA包含探索、迁移和开发三个阶段&…

许战海战略文库|无增长则消亡:大型制造集团增长困境

竞争环境不是匀速变化&#xff0c;而是加速变化。企业的衰退与进化、兴衰更迭在不断发生&#xff0c;这成为一种不可避免的现实。在过去的100年里,全球经济周期的时间长度明显缩短,周期内的波动也更为剧烈。联合国教科文组织的研究表明&#xff0c;18世纪知识更新的周期约为80到…

兔兔答题企业版1.0.0版本全网发布,同时开源前端页面到unicloud插件市场

项目说明 兔兔答题是用户端基于uniapp开发支持多端适配&#xff0c;管理端端采用TypeScriptVue3.jselement-plus&#xff0c;后端采用THinkPHP6PHP8Golang开发的一款在线答题应用程序。 问题反馈 线上预览地址 相关问题可以通过下方的二维码&#xff0c;联系到我。了解更多 …