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

qt : day 3

1.完成登录框的按钮操作,并在登录成功后进行界面跳转

------------------------------------------------------------------
.pro
------------------------------------------------------------------
QT       += core gui  texttospeech
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \failed.cpp \main.cpp \success.cpp \widget.cppHEADERS += \failed.h \success.h \widget.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
FORMS += \failed.ui \success.ui
------------------------------------------------------------------
widget.h
------------------------------------------------------------------
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QIcon>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QTextToSpeech>
class Widget : public QWidget
{Q_OBJECT
public:Widget(QWidget *parent = nullptr);~Widget();private slots:void loginslot();void cancelslot();
signals:void failed_signal();void success_signal();
private:QPushButton *login_btn;QPushButton *cancel_btn;QLineEdit *account_edit;QLineEdit *pwd_edit;QLabel *main_lab;QLabel *account_lab;QLabel *pwd_lab;//创建一个播报员QTextToSpeech *speecher = new QTextToSpeech(this);
};
#endif // WIDGET_H
------------------------------------------------------------------
failed.h
------------------------------------------------------------------
#ifndef FAILED_H
#define FAILED_H
#include <QWidget>
#include <QIcon>
#include <QLabel>
namespace Ui {
class failed;
}
class failed : public QWidget
{Q_OBJECT
public slots:void fail_show();
public:explicit failed(QWidget *parent = nullptr);~failed();
private:Ui::failed *ui;
};
#endif // FAILED_H
------------------------------------------------------------------
success.h
------------------------------------------------------------------
#ifndef SUCCESS_H
#define SUCCESS_H
#include <QWidget>
#include <QIcon>
#include <QLabel>
namespace Ui {
class success;
}
class success : public QWidget
{Q_OBJECTpublic slots:void success_show();
public:explicit success(QWidget *parent = nullptr);~success();
private:Ui::success *ui;
};
#endif // SUCCESS_H
------------------------------------------------------------------
main.cpp
------------------------------------------------------------------
#include "widget.h"
#include "failed.h"
#include "success.h"
#include <QApplication>
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;failed f;success s;QObject::connect(&w,&Widget::failed_signal,&f,&failed::fail_show);QObject::connect(&w,&Widget::success_signal,&s,&success::success_show);w.show();return a.exec();
}
------------------------------------------------------------------
widget.cpp
------------------------------------------------------------------
#include "widget.h"
Widget::Widget(QWidget *parent): QWidget(parent)
{//---------------------------------窗口设置---------------------------------//设置窗口为固定大小this->setFixedSize(540,410);//设置窗口iconthis->setWindowIcon(QIcon("D:/B.work/6qt/day1/icon/wodepeizhenshi.png"));//设置窗口名this->setWindowTitle("鹏哥快聊");//---------------------------------标签设置---------------------------------//=====创建界面标签=====main_lab = new QLabel(this);//修改标签大小main_lab->resize(540,200);//在标签中插入图片main_lab->setPixmap(QPixmap("D:/B.work/6qt/day1/icon/logo.png"));//设置为自适应main_lab->setScaledContents(1);//=====创建账号标签=====account_lab = new QLabel(this);//修改标签大小account_lab->resize(50,40);//在标签中插入图片account_lab->setPixmap(QPixmap("D:/B.work/6qt/day1/icon/userName.jpg"));//移动到合适位置account_lab->move(90,220);//设置为自适应account_lab->setScaledContents(1);//=====创建密码标签=====pwd_lab = new QLabel(this);//修改标签大小pwd_lab->resize(account_lab->size());//在标签中插入图片pwd_lab->setPixmap(QPixmap("D:/B.work/6qt/day1/icon/passwd.jpg"));//移动到合适位置pwd_lab->move(account_lab->x(),account_lab->y()+80);//设置为自适应pwd_lab->setScaledContents(1);//---------------------------------按钮设置---------------------------------//=====创建登录按钮=====login_btn = new QPushButton(this);//设置按钮大小login_btn->resize(100,40);//在按钮上插入图片login_btn->setIcon(QIcon("D:/B.work/6qt/day1/icon/login.png"));//在按钮上输入文本login_btn->setText("登录");//移动到合适位置login_btn->move(270,360);connect(login_btn,&QPushButton::clicked,this,&Widget::loginslot);//=====创建取消按钮=====cancel_btn = new QPushButton(this);//设置按钮大小cancel_btn->resize(100,40);//在按钮上插入图片cancel_btn->setIcon(QIcon("D:/B.work/6qt/day1/icon/cancel.png"));//在按钮上输入文本cancel_btn->setText("取消");//移动到合适位置cancel_btn->move(login_btn->x()+120,login_btn->y());connect(cancel_btn,&QPushButton::clicked,this,&Widget::cancelslot);//---------------------------------输入设置---------------------------------//=====创建账号输入=====account_edit = new QLineEdit(this);//设置占位文本account_edit->setPlaceholderText("QQ号码/手机/邮箱");//设置大小account_edit->resize(200,40);//移动到适合位置account_edit->move(account_lab->x()+100,account_lab->y());//=====创建密码输入=====pwd_edit = new QLineEdit(this);//设置占位文本pwd_edit->setPlaceholderText("密码");//设置大小pwd_edit->resize(account_edit->size());//移动到合适位置pwd_edit->move(pwd_lab->x()+100,pwd_lab->y());//设置回文显示模式pwd_edit->setEchoMode(QLineEdit::Password);
}
Widget::~Widget()
{
}
void Widget::loginslot()
{//登录成功if(account_edit->text()=="admin"){if(pwd_edit->text()=="123456"){emit success_signal();speecher->say("登录成功");this->close();return ;}}//登录失败emit failed_signal();speecher->say("登录失败");pwd_edit->clear();
}
void Widget::cancelslot()
{this->close();
}
------------------------------------------------------------------
fail.cpp
------------------------------------------------------------------
#include "failed.h"
#include "ui_failed.h"
failed::failed(QWidget *parent) :QWidget(parent),ui(new Ui::failed)
{ui->setupUi(this);this->resize(100,70);this->setWindowIcon(QIcon("D:/B.work/6qt/day1/icon/cancel.png"));QLabel *fail_lab = new QLabel(this);fail_lab->setText("登陆失败");fail_lab->resize(100,50);fail_lab->move(0,10);
}
failed::~failed()
{delete ui;
}
void failed::fail_show()
{this->show();
}
------------------------------------------------------------------
success.cpp
------------------------------------------------------------------
#include "success.h"
#include "ui_success.h"
success::success(QWidget *parent) :QWidget(parent),ui(new Ui::success)
{ui->setupUi(this);QLabel *success_lab = new QLabel("登录成功",this);this->setWindowIcon(QIcon("D:/B.work/6qt/day1/icon/login.png"));this->resize(100,70);success_lab->resize(100,50);success_lab->move(0,10);
}
success::~success()
{delete ui;
}
void success::success_show()
{this->show();
}

2.模拟面试答案

1).多态,虚函数,纯虚函数概念
多态:一个名字的多种用途
静态多态:函数的重载(同一作用域下,定义函数名相同参数列表不同的函数)/运算符的重载(给定大多数运算符特殊的意义作用于类对象,使得代码书写更加简洁)
在编译时已经实现对多态的实现
动态多态:需要借助继承和虚函数完成。
虚函数:父类与子类为继承关系,发生在父子类之间,由父类提供虚函数,子类对父类中的虚函数进行重写操作,父类指针指向子类对象,并调用子类中重写父类的虚函数
纯虚函数:对于某些类中的函数,在该类没有实现的意义与必要,称为抽象类,需要子类对该函数进行重写,就可以把该类定义为纯虚函数
2).将"引用"作为函数参数有哪些特点
函数参数作用:解决函数数据没有交集问题,实现函数直接数据的交流
函数参数传递方式:直接将数据传递给目标函数(不会改变函数外的值),地址传递(修改内存内的值,形参实参一起改变),都需要占用内存空间
引用作为函数参数传递方式:传递值本身(本质还是地址传递,不需要新的容器接收数据,效率高)
3).结构体与联合体的区别
相同点:都属于构造数据类型,由相同或不同数据类型所组成的构造数据类型
不同点:所占内存空间的计算方式不同
结构体:各个成员所占内存空间之和,且遵循字节对齐原则
联合体:所有成员共享同一块内存空间,大小以最大的成员为主,使用时,任何成员都可以访问这片空间,但是访问大小不一样

相关文章:

qt : day 3

1.完成登录框的按钮操作&#xff0c;并在登录成功后进行界面跳转 ------------------------------------------------------------------ .pro ------------------------------------------------------------------ QT core gui texttospeech greaterThan(QT_MAJOR_V…...

flutter高德地图大头针

1、效果图 2、pub get #地图定位 amap_flutter_map: ^3.0.0 amap_flutter_location: ^3.0.0 3、上代码 import dart:async; import dart:io;import package:amap_flutter_location/amap_flutter_location.dart; import package:amap_flutter_location/amap_location_option…...

【线性代数】矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)

矩阵求导的本质与分子布局、分母布局的本质&#xff08;矩阵求导——本质篇&#xff09; 说在前面一. 函数与标量、向量、矩阵二. 矩阵求导的本质三. 矩阵求导结果的布局四. 分子布局、分母布局的本质五. 向量变元的实值标量函数 说在前面 我将严谨地说明矩阵求导的本质与分子布…...

快速了解状态管理库Pinia及其使用方法

目录 1.pinia是什么 2.为什么要使用pinia 3.pinia的优点 4.pinia在项目中使用 ①创建一个使用pinia的Vue3项目 ②在页面使用store 1.pinia是什么 Pinia 起源于一次探索 Vuex 下一个迭代的实验&#xff0c;如果你学过Vue2&#xff0c;那么你一定使用过Vuex。Vuex在Vue2中主…...

scratch绘制同心圆 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch绘制同心圆 一、题目要求 1、准备工作 2、功能实现 二、案例分析 <...

【LeetCode】3. 无重复字符的最长子串

3. 无重复字符的最长子串&#xff08;中等&#xff09; 方法&#xff1a;滑动窗口 哈希表 思路 这道题主要用到思路是&#xff1a;滑动窗口 什么是滑动窗口&#xff1f; 其实就是一个队列,比如例题中的 abcabcbb&#xff0c;进入这个队列&#xff08;窗口&#xff09;为 ab…...

苹果macOS 14开发者预览版Beta 7发布 新增超过100款视频壁纸和屏保

8 月 31 日&#xff0c;苹果向 Mac 电脑用户推送了 macOS 14 开发者预览版 Beta 7 更新&#xff08;内部版本号&#xff1a;23A5337a&#xff09;&#xff0c;本次更新距离上次发布隔了 8 天。 苹果发布 Beta 7 更新的同时&#xff0c;还发布了第 6 个公测版&#xff0c;正式版…...

Redis 7 第五讲 事务、管道、发布订阅 过渡篇

事务 理论 可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c;按顺序地串行化执行而不会被其它命令插入&#xff0c;不许加塞 一个队列中&#xff0c;一次性、顺序性、排他性的执行一系列命令 Redis事务 VS 关系型数据库事务…...

[SpringBoot3]视图技术Thymeleaf

七、视图技术Thymeleaf Thymeleaf是一个表现层的模板引擎&#xff0c;一般被使用在Web环境中&#xff0c;它可以处理HTML、XML、JS等文档&#xff0c;简单来说&#xff0c;它可以将JSP作为Java Web应用的表现层&#xff0c;有能力展示与处理数据。这样&#xff0c;同一个模板文…...

wangluobiancheng

UDP send: receive: TCP...

大数据之hadoop入门

大数据概念 大数据&#xff1a;无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现李和流程优化能力的海量、高增长率和多样化的信息资产。 大的概念是相对来说的&#xff1a;目前来说&#xff0…...

浅谈多人游戏原理和简单实现。

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;websocket、网络、原理、多人游戏☀️每日 一言&#xff1a;这世上有两种东西无法直视&#xff0c;一是太阳&#xff0c;二是人心&#xff01; 一、我的游戏史 我最开始接触游戏要从一盘300游戏…...

活动预告 | 龙智、紫龙游戏与JFrog专家将出席龙智DevSecOps研讨会,探讨企业大规模开发创新

2023年9月8日&#xff08;周五&#xff09;下午13:30-19:45&#xff0c;龙智即将携手Atlassian与JFrog在上海共同举办主题为“大规模开发创新&#xff1a;如何提升企业级开发效率与质量”的线下研讨会。 在此次研讨会上&#xff0c;龙智高级咨询顾问、Atlassian认证专家叶燕秀…...

米每秒和千米每小时的换算

千米每时和米每秒怎么换算?1米/秒3600米/3600秒 米每秒和千米每小时的换算(米每秒和千米每小时的换算) 3.6千米/小时。 3.6千米/小时1米/秒米每秒和千米每小时的换算1 米/秒(米每秒)3.6 千米/时(千米每小时)。 1米每秒3600米每时3.6千米每时。因为1小时3600秒。小时是一个时…...

js实现图形验证码

图形验证码起什么作用&#xff1a; 可以防止&#xff1a;恶意破解密码、刷票、论坛灌水&#xff0c;有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。 验证码一般是防止批量注册的&#xff0c;人眼看起来都费劲&#xff0c;何况是机器。不少…...

一句话画出动漫效果

链接&#xff1a; AI Comic Factory - a Hugging Face Space by jbilcke-hfDiscover amazing ML apps made by the communityhttps://huggingface.co/spaces/jbilcke-hf/ai-comic-factory 选择类型&#xff1a; Japanese 输入提示词&#xff1a; beauty and school love st…...

【openGauss2.1.0 TPC-C数据导入】

openGauss2.1.0 TPC-C数据导入 一、下载tpch测试数据二、导入测试数据 一、下载tpch测试数据 使用普通用户如omm登录服务器执行如下命令下载测试数据库&#xff1a;git clone https://gitee.com/xzp-blog/tpch-kit.git二、导入测试数据 进入dbgen目录下&#xff0c;生成makef…...

vue+elementui表格导出

htmlToExcel.js import FileSaver from file-saver import XLSX from xlsxconst htmlToExcel {getExcel(dom, title 默认标题) {var excelTitle titlevar wb XLSX.utils.table_to_book(document.querySelector(dom))/* 获取二进制字符串作为输出 */var wbout XLSX.write(w…...

掌握前端利器:JavaScript页面渲染高阶方法解析与实战

引言 前端开发中&#xff0c;页面渲染的速度和质量是衡量一个开发者水平的重要标准。而在众多的前端技术中&#xff0c;JavaScript以其强大的页面渲染能力独占鳌头。本文将深入探讨JavaScript在页面渲染中的应用&#xff0c;并通过实例展示其高阶方法&#xff0c;旨在帮助读者…...

面试题——网络IO模型

一、socket socket是在应用层和传输层中间的抽象层&#xff0c;它把传输层&#xff08;TCP/UDP&#xff09;的复杂操作抽象成一些简单的接口&#xff0c;供应用层调用实现进程在网络中的通信。Socket起源于UNIX&#xff0c;在Unix一切皆文件的思想下&#xff0c;进程间通信就被…...

AI辅助科研的加速逻辑与隐性成本拆解

1. 这不是科幻片里的桥段&#xff1a;当AI真正坐进实验室&#xff0c;它在改写科研的底层规则 “AI加速科学发现”这个说法&#xff0c;最近两年几乎成了学术会议开场白的标配。但如果你真去翻过Nature、Science上那些标着“AI-driven discovery”的论文&#xff0c;会发现一个…...

SQL Server报错注入原理与三大稳定Payload实战

1. 报错注入不是“碰运气”&#xff0c;而是SqlServer的确定性行为很多人第一次听说“报错注入”时&#xff0c;下意识觉得这是在赌数据库会不会吐错误信息——输个单引号试试&#xff0c;看页面崩不崩&#xff1b;加个AND 1CONVERT(int, (SELECT version))&#xff0c;看是不是…...

零和博弈 vs 正和系统:用强化学习原理破解组织内耗

1. 项目概述&#xff1a;从办公室茶水间到算法沙盒&#xff0c;零和与正和到底在争什么&#xff1f;你有没有经历过这样的场景&#xff1a;部门刚拿到一笔季度奖金池&#xff0c;五个人分三十万。A悄悄把B的客户案例写进自己的述职PPT&#xff1b;C在跨组协作时故意延迟交付&am…...

C51浮点数处理:IEEE-754标准与嵌入式实践

1. C51浮点数范围解析&#xff1a;从原理到实践边界在嵌入式开发领域&#xff0c;浮点数处理一直是硬件资源受限场景下的棘手问题。作为Keil C51编译器&#xff08;8051架构标准开发工具&#xff09;的长期使用者&#xff0c;我深刻理解准确掌握浮点数边界值对嵌入式系统稳定性…...

深入解析GROUPING SETS:多维聚合原理、性能优化与Spark实现

1. 从聚合到多维分析&#xff1a;为什么需要Grouping Sets&#xff1f;在日常的数据分析工作中&#xff0c;我们经常遇到这样的场景&#xff1a;老板不仅要看每个城市、每个车型的销量总和&#xff0c;还想同时看到每个城市的总销量&#xff08;不考虑车型&#xff09;&#xf…...

AIAgent 才是 Hermes Agent 的“总调度器”:run_agent.py 在系统里到底负责什么?

一、先给结论&#xff1a;AIAgent 不是“大模型”&#xff0c;而是“任务总控台”很多人第一次看 Hermes Agent&#xff0c;容易把核心误解成“调用某个大模型的代码”。但从官方文档和源码结构看&#xff0c;真正的核心不是模型本身&#xff0c;而是 run_agent.py 里的 AIAgen…...

LLM成长笔记(六):RAG(检索增强生成)

RAG&#xff08;检索增强生成&#xff09;全栈学习博客&#xff08;通俗原理 详细注释 AI应用强化版&#xff09; RAG 是让大模型“能回答它没学过的新知识”的核心架构。这篇博客从实际问题出发&#xff0c;用生活化类比建立直觉&#xff0c;通过术语详解深入概念本质&#…...

收藏!揭秘高薪职业:AI大模型训练师,小白也能入门的AI时代新机遇!

本文介绍了AI大模型训练师这一新兴职业&#xff0c;旨在解决AI与人类沟通的障碍。训练师通过拆解人类模糊需求&#xff0c;教AI识别信号&#xff0c;输出精准回应。随着AI技术普及&#xff0c;该岗位需求激增&#xff0c;薪资可达3w。工作内容包括数据管理、模型训练、评估迭代…...

打开U盘文件夹变成.exe的问题:在MAC ios中的解决办法

Mac文件夹变成.exe文件&#xff0c;通常是由于病毒将原文件夹隐藏并生成同名exe文件所致。 此类情况多发生于Mac移动硬盘或U盘在Windows系统感染病毒后&#xff0c;病毒会隐藏原始文件夹&#xff0c;并生成伪装成文件夹的exe文件。由于Mac系统默认不显示文件扩展名&#xff0c…...

终极指南:如何用ESP32-A2DP库快速构建蓝牙音频设备

终极指南&#xff1a;如何用ESP32-A2DP库快速构建蓝牙音频设备 【免费下载链接】ESP32-A2DP A Simple ESP32 Bluetooth A2DP Library (to implement a Music Receiver or Sender) that supports Arduino, PlatformIO and Espressif IDF 项目地址: https://gitcode.com/gh_mir…...