7.26 作业 QT

news2024/11/26 9:38:52

1.继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中:

结果图:

 second.h:

#define SECOND_H

#include <QWidget>
#include<QDebug>              //信息调试类,用于打印输出的
#include<QIcon>          //图标头文件
#include<QPushButton>     //按钮类头文件
#include<QLineEdit>       //行编辑器类
#include<QLabel>              //标签类
#include <QMovie>
#include <QDebug>
namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT

public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();

public slots:
    void jump_slot();      //跳转对应的槽函数

private:
    Ui::Second *ui;

    QLabel *lab1;
};

#endif // SECOND_H

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QDebug>              //信息调试类,用于打印输出的
#include<QIcon>          //图标头文件
#include<QPushButton>     //按钮类头文件
#include<QLineEdit>       //行编辑器类
#include<QLabel>              //标签类
#include <QMovie>
#include <QDebug>
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

signals:    //该权限下说明要定义信号函数
    void jump();   //定义跳转的信号函数


public slots:   //该权限下要定义公共的槽函数
    void my_slot();     //自定义的槽函数 处理取消按钮的槽函数
    void btn2_slot();   //自定义处理按钮2发射的信号的槽函数声明
    void loging_slot();  //自定义处理登录按钮的槽函数
    void jump_btn1_click(); //自定义登录按钮跳转函数

private:
    QLabel *lab1;
    QLabel *lab2;
    QLabel *lab3;
    QLabel *lab4;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QPushButton *btn1;
    QPushButton *btn2;
};
#endif // WIDGET_H

main.cpp:

#include "widget.h"
#include "second.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    Second s;   //实例化第二个界面

    QObject::connect(&w , &Widget::jump, &s ,&Second::jump_slot);

    return a.exec();
}

second.cpp:

#include "second.h"
#include "ui_second.h"

Second::Second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Second)
{
    ui->setupUi(this);
}

Second::~Second()
{
    delete ui;
}

void Second::jump_slot()
{
    this->show();
}

widget.cpp:

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //设置尺寸
    this->resize(800,600);  //设置宽高
    //设置固定尺寸
    this->setFixedSize(800,600);

    //窗口标题操作
    qDebug()<<this->windowTitle();  //获取窗口标题
    this->setWindowTitle("iKun论坛");

    //设置窗口图标
    this->setWindowIcon(QIcon("D:\\Icon\\kun.png"));



    //QLabel
    lab1 = new QLabel(this);    //指定父组件
    lab1->resize(800,325);      //重新设置尺寸
    lab1->setAlignment(Qt::AlignCenter);    //垂直和水平全都剧中

    //使用QMovie加载gif图片
    QMovie *gifMovie = new QMovie("D:\\Icon\\kunkun.gif");
    lab1->setMovie(gifMovie);
    lab1->setScaledContents(true);  //自适应大小
    gifMovie->start();  //开始播放gif

    lab2 = new QLabel(this);    //指定父组件
    lab2->resize(80,50);
    lab2->move(200,350);
    lab2->setPixmap(QPixmap("D:\\Icon\\zhongfen.png"));
    lab2->setScaledContents(true);  //图片自适应大小

    lab3 = new QLabel(this);
    lab3->resize(80,50);
    lab3->move(200,420);
    lab3->setPixmap(QPixmap("D:\\Icon\\tieshankao.png"));
    lab3->setScaledContents(true);  //图片自适应大小

    lab4 = new QLabel(this);
    lab4->resize(175,250);  //重新设置尺寸
    lab4->move(0,340);       //移动位置
    QMovie *gifMovie2 = new QMovie("D:\\Icon\\kunkun2.gif");
    lab4->setMovie(gifMovie2);
    lab4->setScaledContents(true);  //自适应大小
    gifMovie2->start();  //开始播放gif


    //QLineEdit
    edit1 = new QLineEdit(this); //有参构造,构造时给定父组件
    edit1->resize(300,50);
    edit1->move(300,350);   //移动
    edit1->setPlaceholderText("黑子名");   //设置占位符

    edit2 = new QLineEdit(this);
    edit2->resize(edit1->size());   //设置和edit1的大小相同
    edit2->move(300,420);   //移动
    edit2->setEchoMode(QLineEdit::Password);    //设置密文模式
    edit2->setPlaceholderText("鸡脚");   //设置占位符


    //QPushButton
    btn1 = new QPushButton(this);
    btn1->setText("你干嘛哎哟~");    //设置按钮上文本内容
    btn1->resize(140,50);    //设置组件的大小
    btn1->move(470,500);    //移动组件
    btn1->setIcon(QIcon("D:\\Icon\\kun2.png"));
    QSize iconSize(50,50);   //设置图标大小
    btn1->setIconSize(iconSize);

    btn2 = new QPushButton(this);
    btn2->setText("食不食油饼");
    btn2->resize(btn1->size());     //设置和btn1一样的大小
    btn2->move(650,500);
    btn2->setIcon(QIcon("D:\\Icon\\kun3.png"));
    btn2->setIconSize(iconSize);

    //用qt4版本的连接,将取消按钮连接到自定义的函数中
    connect(btn2,SIGNAL(clicked()),this,SLOT(my_slot()));

    //用qt5版本的连接,将登录按钮连接到自定义的槽函数中
    connect(btn1,&QPushButton::clicked,this,&Widget::loging_slot);

}


Widget::~Widget()
{

}

//void widged类外定义的槽函数 取消按钮
void Widget::my_slot()
{
    this->close();
}

//连接登录的槽函数
void Widget::btn2_slot()
{
    connect(btn2,SIGNAL(clicked()),this,SLOT(my_slot()));
}

void Widget::loging_slot()
{
    QString userName = edit1->text();
    QString pwd = edit2->text();
    if(userName=="mind" && pwd=="123456")
    {
        qDebug()<<"登录成功";
        Widget::jump_btn1_click();
    }else
        qDebug()<<"登录失败";
}

//跳转对应的槽函数
void Widget::jump_btn1_click()
{
    //发送跳转信号
    emit jump();

    this->close();
}

2.新建一个工程文件,将默认提供的代码加上注释信息:

.pro:

​
QT       += core gui  //表示引入qt所需的类库,如核心库,图形化界面库

//表示此版本超过4.0版本,系统自动加的widgets库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

//表示该版的qt支持c++11后的语法
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 += \
    main.cpp \
    mainwindow.cpp

//管理头文件
HEADERS += \
    mainwindow.h

//管理ui文件
FORMS += \
    mainwindow.ui

TRANSLATIONS += \
    01test_zh_CN.ts

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

​

3.思维导图:

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

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

相关文章

学C的第三十天【自定义类型:结构体、枚举、联合】

相关代码gitee自取&#xff1a;C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第二十九天【字符串函数和内存函数的介绍&#xff08;二&#xff09;】_高高的胖子的博客-CSDN博客 1 . 结构体 &#xff08;1&#xff09;. 结构体的基础知识&#xff1a; 结构…

docker-compose yml配置、常用命令

下载完docker-compose后&#xff0c;如果想使用docker-compose命令开头&#xff0c;需要创建软连接 sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose 1.docker-compose.yml文件编排 一个 docker-compose.yml 文件的顶层元素有&#xff…

线程的同步

一、互斥锁 java语言中&#xff0c;引入了对象互斥锁的概念&#xff0c;来保证共享数据操作的完整性。每个对象都对应与一个可称为“互斥锁”的标记&#xff0c;这个标记用来保证在任一时刻&#xff0c;只能有 一个线程访问该对象。关键字synchronized用来与对象的互斥锁联系。…

HTML不常用但是好用的标签

sub sup <p>这个文本包含 <sub>111</sub>文本。</p> <p>这个文本包含 <sup>上标</sup> 文本。</p>下标文本将会显示在当前文本流中字符高度的一半为基准线的下方&#xff0c;但是与当前文本流中文字的字体和字号都是一样的。…

Xilinx AXI VIP使用教程

AXI接口虽然经常使用&#xff0c;很多同学可能并不清楚Vivado里面也集成了AXI的Verification IP&#xff0c;可以当做AXI的master、pass through和slave&#xff0c;本次内容我们看下AXI VIP当作master时如何使用。 新建Vivado工程&#xff0c;并新建block design&#xff0c;命…

YOLOv7改进:CVPR 2023 | SCConv: 即插即用的空间和通道重建卷积

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点。 2.涨点效果:添加 SCConv,经过测试,有效涨点。…

【FAQ】关于无法判断和区分用户与地图交互手势类型的解决办法

一&#xff0e; 问题描述 当用户通过缩放手势、平移手势、倾斜手势和旋转手势与地图交互&#xff0c;控制地图移动改变其可见区域时&#xff0c;华为地图SDK没有提供直接获取用户手势类型的API。 二&#xff0e; 解决方案 华为地图SDK的地图相机有提供CameraPosition类&…

labview 信号量实现互斥 避免竞争写

上一篇文章中描述了事件发生、集合点、通知器、信号量。 本文进一步举例描述信号量实现互斥&#xff0c;避免竞争写。 1.不用信号量的例子 图1-不用信号量的结果都不同&#xff0c;不为0 图2-不用信号量的例子&#xff0c;程序框图 2.用信号量的例子 图3-用信号量的例子&…

手工测试如何转向自动化测试

手工测试的迷茫&#xff1a;除了重复劳动&#xff0c;到底还有什么&#xff1f; 我是在2008年毕业的&#xff0c;三本的学校&#xff0c;不上不下的专业水平&#xff0c;毕业的时候&#xff0c;恰好遇到了金融危机。校园招聘里阴差阳错的巧合&#xff0c;让我走上了软件测试工…

运算放大器基础(一)

5.1.1反馈的基本概念 在电子电路中,将 输出量 (输出电压或输出电流)的一部分或全部通过一定的电路形式作用到 输入回路&#xff0c;用来影响其输入量(放大电路的输入电压或输入电流)的措施称为 反馈。具体框图如下&#xff1a;反馈类型判断 正反馈与负反馈 正反馈&…

CHI协议之DVM操作

本文部分内容参考了CHI的Cache Stashing和DVM操作_谷公子的藏经阁的博客-CSDN博客 □ 注意此处RNF发送的noncopyback data, 只有8byte; □ MN会发送两个SNP给每个RNF, 因为一个SNP&#xff0c;携带的信息不够&#xff1b; □ 如果MN具备将来自同一个源头的non-sync/sync dvmop操…

详解Mybatis之自动映射 自定义映射问题

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 一、Mybatis中的自动映射是什么&#xff1f;二、Mybatis中的自定义映射是什么&#xff1f;三、为什…

华东师范大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 华东师范大学&#xff08;B&#xff09;考研难度&#xff08;☆☆☆☆&#xff09; 华东师范大学计算机考研招生学院是计算机科学与技术学院、软件工程学院网址和数据科学与工程学院。目前均已出拟录取名单。 华东师…

前端JS 展示上传图片缩略图(本地图片读取)

需求&#xff1a; 点击上传图片按钮&#xff0c;选择图片以后&#xff0c;不请求后端接口&#xff0c;直接将图片展示在缩略图中。 解决方案&#xff1a; 使用 FileReader 和 FileReader 中的 readAsDataURL 方法。 第一步 从input[type“file”] (上传文件标签) 里面拿到fil…

解密直播美颜SDK和滤镜算法的工作原理:如何实现实时美化效果

直播美颜已成为许多直播平台的核心功能之一。通过美颜技术&#xff0c;主播可以在直播过程中实时改善自己的外貌&#xff0c;给观众带来更好的视觉体验。而实现这一效果的关键在于直播美颜SDK和滤镜算法。 一、美颜SDK的工作原理 美颜SDK是一种集成了美颜算法的软件开发工具包…

亚马逊奥地利卖家出口额创新高!2022年突破5.5亿欧元!

近日亚马逊报告说&#xff0c;2022年奥地利中小企业的出口额达到5.5亿欧元以上&#xff0c;比上一年增长了10%&#xff0c;延续了跨境销售的趋势。去年&#xff0c;奥地利卖家在亚马逊上销售了约2000万件产品。 亚马逊宣称&#xff0c;通过其全球22个站点&#xff0c;奥地利的…

[ 容器 ] consul 容器服务更新与发现

目录 什么是服务注册与发现什么是consulconsul 部署consul 服务器 registrator服务器consul-templateconsul 多节点 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承…

学习 C语言第二天 :C语言数据类型和变量(下)

目录&#xff1a; 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了&#xff0c;类型是用来创建变量的。 变量是什么呢&#xff1f;在C语言当中不经常变的量称为常量&#xff0c;经常…

Python实战项目——O2O_优惠券使用情况分析(五)

O2O优惠券线下使用情况数据分析 一 项目简介 随着移动设备的完善和普及&#xff0c;移动互联网各行各业进入了高速发展阶段&#xff0c;这其中以O2O&#xff08;Online to Offline&#xff09;消费最为吸引眼球。据不完全统计&#xff0c;O2O行业估值上亿的创业公司至少有10家…

【Docker】Docker的服务更新与发现

consul 一、服务注册与发现1. 服务注册与发现的概念2. 服务发现的机制 二、consul 的概念1. 什么是 consul2. consul 的特性 三、consul 的部署1. consul 服务器架构2. consul 的部署过程2.1 环境配置2.2 consul 服务器建立 Consul 服务查看集群信息通过 http api 获取集群信息…