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).结构体与联合体的区别
相同点:都属于构造数据类型,由相同或不同数据类型所组成的构造数据类型
不同点:所占内存空间的计算方式不同
结构体:各个成员所占内存空间之和,且遵循字节对齐原则
联合体:所有成员共享同一块内存空间,大小以最大的成员为主,使用时,任何成员都可以访问这片空间,但是访问大小不一样

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

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

相关文章

Talk | ICCV‘23南洋理工大学博士后李祥泰:面向统一高效的视频分割方法设计

本期为TechBeat人工智能社区第528期线上Talk&#xff01; 北京时间9月6日(周三)20:00&#xff0c;南洋理工大学博士后研究员—李祥泰的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “面向统一高效的视频分割方法设计”&#xff0c;他分享了其在视…

华为云云服务器评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决

目录 引出安装JDK8环境查看是否有默认jar上传Linux版本的jar包解压压缩包配置环境变量 上传jar包以及运行问题上传Jar包运行控制台开放端口访问失败—见问题记录关闭Jar的方式1.进程kill -92.ctrl c退出 问题记录&#xff1a;【!】未解决各种方式查看端口情况联系工程师最后排查…

在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

智能电销机器人,主要体现的价值是什么

21世纪科技的迅速发展&#xff0c;人工智能逐渐走入大家的视线&#xff0c;越来越多的机器人出现在我们生活中。见的最多的有电销公司的智能语音机器人、在仓库拣货打包的机器人、商场店铺供娱乐对话的机器人。机器人活跃在各行各业中&#xff0c;降低了人工成本&#xff0c;代…

录音工具哪个好用?亲身测评,推荐这几个

“电脑录音用什么工具呀&#xff0c;前几天录制的视频声音没有录进去&#xff0c;现在需要重新补录声音&#xff0c;但是找不到合适的录音工具&#xff0c;就想问问大家&#xff0c;有没有好用的录音工具推荐呀&#xff1f;” 现如今&#xff0c;录音工具在我们的生活和工作中…

Kubernetes(k8s)上安装Prometheus和Grafana监控

Kubernetes上安装Prometheus和Grafana监控 环境准备Kubernetes准备 安装项目开始安装下载安装的项目安装项目替换镜像替换kube-state-metrics替换prometheus-adapter 修改Service修改alertmanager-service.yaml修改grafana-service.yaml修改prometheus-service.yaml 执行这些ya…

报错:crbug/1173575 non-js module files deprecated

环境&#xff1a; vue3 &#xff0c; visual studio code, bulma 背景&#xff1a; 在代码中&#xff0c;使用标签来进行导航栏跳转。 如&#xff1a; <div class"navbar-start"><a href"/groups">产品</router-link> </div>执…

Vue + Element UI 前端篇(三):工具模块封装

Vue Element UI 实现权限管理系统 前端篇&#xff08;三&#xff09;&#xff1a;工具模块封装 封装 axios 模块 封装背景 使用axios发起一个请求是比较简单的事情&#xff0c;但是axios没有进行封装复用&#xff0c;项目越来越大&#xff0c;会引起越来越多的代码冗余&am…

浅谈Spring

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&#xff08;框架&#xff09;。 一、什么是IOC&#xff1f; IoC Inversion of Control 翻译成中⽂是“控制反转”的意思&#xff0c;也就是说 Spring 是⼀个“控制反转”的容器。 1.1控制反转推导 这个控制反转怎…

远程访问服务器JupyterLab的配置方法【转载】

远程访问服务器JupyterLab的配置方法 环境及工具基本步骤生成密码生成并修改配置文件后台运行jupyter后台关闭 其实就是在服务器运行JupyterLab&#xff0c;然后在本地浏览器访问 环境及工具 服务器&#xff1a;Ubuntu 16.04 本机&#xff1a;Mac OS Catalina 10.15.3 Royal …

什么是 CSS

什么是 CSS CSS全称为Cascading Style Sheets&#xff0c;译为层叠样式表。样式定义如何显示HTML元素。样式通常存储在样式表中。 CSS 是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统 HTML 的表现而言&#xff0c;CSS 能够对网页中的对象的位置排版进行像素…

c语言逻辑思维

c语言逻辑思维 1.如何问问题? 有甲、乙两人&#xff0c;其中&#xff0c;甲只说假话&#xff0c;而不说真话;乙则是只说真话&#xff0c;不说假话。但是&#xff0c;他们两个人在回答别人的问题时&#xff0c;只通过点头与摇头来表示&#xff0c;不讲话。有一天&#xff0c;一…

Unity中Shader的时间_Time

文章目录 前言一、_Time.xyzw分别代表什么二、_Time怎么使用 前言 Unity中Shader的时间_Time 一、_Time.xyzw分别代表什么 _Time.y 代表当前时间 二、_Time怎么使用 在需要使用的地方直接 * _Time.y 或 x / z / w 测试代码&#xff1a; Shader "MyShader/P0_9_5&qu…

css 命名规则

一个有规则的命名 会提高代码的可读性 一、命名规则说明&#xff1a; 1&#xff09;、所有的命名最好都小写 2&#xff09;、属性的值一定要用双引号(“”)括起来 3&#xff09;、给图片加上alt标签 4&#xff09;、尽量使用英文命名原则 5&#xff09;、尽量不缩写&#xff0…

python容器模块Collections

Python附带一个模块&#xff0c;它包含许多容器数据类型&#xff0c;名字叫作collections defaultdict defaultdict与dict类型不同&#xff0c;你不需要检查key是否存在&#xff0c;所以我们能这样做&#xff1a; from collections import defaultdict colours ((Yasoob, Y…

angular 测试 api 说明

detectChanges(checkNoChanges?: boolean): void; 触发组件的变更检测周期。它重新评估组件的模板并相应地更新视图。checkNoChanges参数是可选的&#xff0c;可用于检查是否存在不应发生的任何更改。 checkNoChanges(): void; 执行变更检测运行&#xff0c;以确保组件没有意外…

Kali Linux渗透测试技术介绍【文末送书】

文章目录 写在前面一、什么是Kali Linux二、渗透测试基础概述和方法论三、好书推荐1. 书籍简介2. 读者对象3. 随书资源 写作末尾 写在前面 对于企业网络安全建设工作的质量保障&#xff0c;业界普遍遵循PDCA&#xff08;计划&#xff08;Plan&#xff09;、实施&#xff08;Do…

【网络爬虫笔记】爬虫Robots协议语法详解

Robots协议是指一个被称为Robots Exclusion Protocol的协议。该协议的主要功能是向网络蜘蛛、机器人等搜索引擎爬虫提供一个标准的访问控制机制&#xff0c;告诉它们哪些页面可以被抓取&#xff0c;哪些页面不可以被抓取。本文将进行爬虫Robots协议语法详解&#xff0c;同时提供…

管理学国际化与领导力视角

随着全球化的进程不断加速&#xff0c;管理学的国际化已经成为一个不可忽视的趋势。在这个多元化和全球化的时代&#xff0c;管理者需要具备跨文化的领导力&#xff0c;以适应不同国家和地区的商业环境&#xff0c;并有效地管理全球团队。本文将从管理学国际化和领导力的角度探…

Java # Java容器

Java容器的分类 List ArrayList 源码 public static vooid main(String[] args){ArrayList<String> list new ArrayList<>();list.add("hello");list.add(1, "hello");list.remove("hello"); } list.add("hello"); …