Linux 学习记录47(QT篇待完成)

news2024/11/14 13:56:38

Linux 学习记录47(QT篇)

在这里插入图片描述

本文目录

  • Linux 学习记录47(QT篇)
  • 一、将资源文件加载到项目
    • 1. 将资源文件放到项目下
    • 2. 添加到项目
  • 二、信号与槽机制
    • 1. 信号与槽机制概念
    • 2. 信号与槽概念
  • 三、
  • 四、
  • 思维导图
  • 练习
    • 1. main_page.cpp
    • 2. main.cpp
    • 3. main_page.h
    • 4. login.cpp
    • 5. login.h

一、将资源文件加载到项目

1. 将资源文件放到项目下

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

2. 添加到项目

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

二、信号与槽机制

1. 信号与槽机制概念

2. 信号与槽概念

三、

四、

思维导图

练习

1. main_page.cpp

#include "main_page.h"
#include "ui_main_page.h"

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

    //设置固定尺寸
    this->setFixedSize(600,360);
    this->setWindowTitle("Qt window");//当前界面尺寸
    //设置窗口图标
    this->setWindowIcon(QIcon(":/new/prefix1/Qt_w.png"));//设置窗口图标
    this->setStyleSheet("background-color:#F5F5F5;");//设置窗口背景颜色

    // 创建一个QLabel用于显示动态图
    QLabel label;

    // 创建一个QMovie对象,并加载动态图文件
    QMovie movie("path_to_your_animated_gif.gif");



}

//处理跳转信号函数对应的槽函数
void main_page::jump_slot(void)
{
    this->show();          //将当前界面进行展示
}

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

2. main.cpp

#include "login.h"
#include "main_page.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    login w;
    main_page m;
    w.show();
    QObject::connect(&w,&login::jump,&m,&main_page::jump_slot);

    return a.exec();
}

3. main_page.h

#ifndef MAIN_PAGE_H
#define MAIN_PAGE_H

#include <QWidget>

#include <QGridLayout>
#include <QString>
#include <QPushButton>
#include <QDebug>
#include <QLabel>
#include <QIcon>
#include <QMovie>
#include <QLineEdit>
#include <QFont>

namespace Ui {
class main_page;
}

class main_page : public QWidget
{
    Q_OBJECT

public slots:
    void jump_slot(void);    //定义有关处理跳转信号的槽函数

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

private:
    Ui::main_page *ui;
};

#endif // MAIN_PAGE_H

4. login.cpp

#include "login.h"
#include "ui_login.h"

QString UID_set = "321142827";
QString pswd_set = "zd332526";

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

    QFont font;//字体设置
    /***********************窗口设置***********************/
    //设置固定尺寸
    this->setFixedSize(600,360);
    this->setWindowTitle("Qt window");//当前界面尺寸
    //设置窗口图标
    this->setWindowIcon(QIcon(":/new/prefix1/Qt_w.png"));//设置窗口图标
    this->setStyleSheet("background-color:#F5F5F5;");//设置窗口背景颜色

    /*// 创建一个QLabel用于显示动态图
    QLabel* label = new QLabel (this);
    // 创建一个QMovie对象,并加载动态图文件
    QMovie* movie = new QMovie ("C:\\Users\\Hao\\Desktop\\buf\\bule2.gif");
    // 将QMovie与QLabel关联
    label->setMovie(movie);
    // 开始播放动态图
    movie->start();

    // 调整标签大小以适应动态图
    label->adjustSize();*/

    QLabel *theme1 = new QLabel(this);//设置窗口上半主题
    theme1->resize(600,180);//设置窗口上半主题空间
    theme1->setPixmap(QPixmap(":/new/prefix1/Qt.jpg"));//设置窗口上半主题样式

    QLabel *lab2 = new QLabel(this);//UID图标
    lab2->resize(40,40);
    lab2->move(205,205);
    lab2->setPixmap(QPixmap(":/new/prefix1/UID.png"));
    lab2->setScaledContents(true);

    QLabel *lab3 = new QLabel(this);//Pass word图标
    lab3->resize(40,40);
    lab3->move(205,245);
    lab3->setPixmap(QPixmap(":/new/prefix1/lock.png"));
    lab3->setScaledContents(true);

    /***********************按钮设置***********************/
    int Button_size[2]={80,40};//登录/取消按键设置
    int Button_move_L[2]={200,290};//登录按键坐标
    int Button_move_C[2]={320,290};//取消按键坐标

    log_on = new QPushButton(QIcon(":/new/prefix1/UID.png"),"登录", this);
    cancel = new QPushButton(QIcon(":/new/prefix1/cancel.png"),"取消", this);
    log_on->resize(Button_size[0],Button_size[1]);
    log_on->move(Button_move_L[0],Button_move_L[1]);
    log_on->setStyleSheet("border:none;border-radius:10px;background-color:#3CB371;color:#fff");

    cancel->resize(Button_size[0],Button_size[1]);
    cancel->move(Button_move_C[0],Button_move_C[1]);
    cancel->setStyleSheet("border:none;border-radius:10px;background-color:#3CB371;color:#fff");

    connect(log_on,&QPushButton::clicked,this,&login::login_signals);
    connect(cancel,&QPushButton::clicked,this,&login::cancel_signals);
    /***********************编辑器设置***********************/
    font.setPointSize(12);
    font.setFamily("宋体");
    int line_len = 150;//行编辑器长度
    int line_width = 30;//行编辑器长度
    int UID_move[2]={250,210};//行编辑器坐标
    int Pswd_move[2]={250,250};//行编辑器坐标
    int prompt_move[2]={205,190};//行编辑器坐标

    /*配置UID编辑器*/
    UID = new QLineEdit(this);
    UID->resize(line_len,line_width);//重新设置大小
    UID->move(UID_move[0],UID_move[1]);//移动
    UID->setStyleSheet("border:none;border-radius:10px;background-color:#696969;color:#fff;opacity: 0.3;");// 设置样式表
    UID->setPlaceholderText("UID");//设置占位文本
    UID->setFont(font);

    /*配置密码编辑器*/
    pswd = new QLineEdit(this);
    pswd->resize(line_len,line_width);//重新设置大小
    pswd->move(Pswd_move[0],Pswd_move[1]);//移动
    pswd->setStyleSheet("border:none;border-radius:10px;background-color:#696969;color:#fff;opacity: 0.5;");// 设置样式表
    pswd->setPlaceholderText("Pass word");//设置占位文本
    pswd->setEchoMode(QLineEdit::Password);//设置密文模式
    pswd->setFont(font);
    pswd->setWindowOpacity(0.5);

    font.setPointSize(10);
    font.setFamily("黑体");
    prompt = new QLineEdit(this);
    prompt->resize(200,15);//重新设置大小
    prompt->move(prompt_move[0],prompt_move[1]);//移动
    prompt->setStyleSheet("border:none;border-radius:10px;color:#FF0000");// 设置样式表
    prompt->setPlaceholderText("请输入登录信息");//设置占位文本
    prompt->setFont(font);
    prompt->setAlignment(Qt::AlignCenter);
    prompt->setEnabled(false);


}

void login::login_signals(void)
{
    QString UID_line;
    QString pswd_line;

    UID_line = UID->text();
    pswd_line = pswd->text();

    if(UID_line==UID_set && pswd_line==pswd_set)
    {//登陆成功
        emit jump();//发送跳转信号
        this->close();//关闭当前界面
    }else
    {//账号/密码错误
        prompt->setPlaceholderText("UID/pswd错误");//设置占位文本
    }
}

void login::cancel_signals(void)
{
    /*文本内容*/
    UID->clear();
    pswd->clear();
}

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

5. login.h

#ifndef LOGIN_H
#define LOGIN_H

#include <QMainWindow>

#include <QGridLayout>
#include <QString>
#include <QPushButton>
#include <QDebug>
#include <QLabel>
#include <QIcon>
#include <QMovie>
#include <QLineEdit>
#include <QFont>

QT_BEGIN_NAMESPACE
namespace Ui { class login; }
QT_END_NAMESPACE

class login : public QMainWindow
{
    Q_OBJECT

signals:
    void jump();          //自定义跳转函数

private slots:
    void login_signals(void);
    void cancel_signals(void);

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

private:
    Ui::login *ui;

    QPushButton *log_on;//登录按键
    QPushButton *cancel;//取消按键

    QLineEdit *UID;
    QLineEdit *pswd;
    QLineEdit *prompt;

};
#endif // LOGIN_H

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

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

相关文章

Delphi 11必备指南:使用Git集成Python4Delphi的完整步骤

在Delphi中使用Python有很多好处&#xff0c;可以扩展Delphi的功能并利用Python强大的科学计算和数据分析库。但是&#xff0c;为了将Python集成到Delphi中&#xff0c;我们需要安装Python for Delphi (P4D)组件套件。在这篇博客中&#xff0c;我将介绍如何使用Git安装P4D组件套…

N-122基于springboot,vue网上订餐系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术 &#xff1a;VueElementUI 服务端技术&#xff1a;springbootmybatisredis 本系统分用户前台和管理后台两部分&#xff0c;…

python_day3_list

数据容器 &#xff1a; list&#xff08;列表&#xff09; tuple&#xff08;元组&#xff09; str&#xff08;字符串&#xff09; set&#xff08;集合&#xff09; dict&#xff08;字典&#xff09; 列表 list name_list [java, c, python] print(name_list) print(type…

【LeetCode每日一题合集】2023.7.3-2023.7.9

文章目录 2023.7.3——445. 两数相加 II&#xff08;大数相加/高精度加法&#xff09;2023.7.4——2679. 矩阵中的和2023.7.5——2600. K 件物品的最大和&#xff08;贪心&#xff09;代码1——贪心模拟代码2——Java一行 2023.7.6——2178. 拆分成最多数目的正偶数之和&#x…

C. Vampiric Powers, anyone? - 思维+前缀和

分析&#xff1a; 添加新元素的操作可以理解为添加任意一段以n结尾的异或和&#xff0c;当原数组总异或和与新加的元素进行异或又可以得到剩余的前缀的异或和&#xff0c;假设新加的元素的值是i到n的异或和x&#xff0c;那么总异或和sumpre^x&#xff0c;所以sum^xpre&#xff…

Git gui教程---第四篇 Git gui的使用 添加文件,并提交

添加文件&#xff0c;并提交 新建一个txt文件点击扫描重新扫描&#xff0c;未缓存改动多了我们刚刚新建的文件。 点击缓存改动&#xff0c;文件位置变换。 如果缓存选错&#xff0c;想撤销&#xff0c;在菜单栏选择“提交”&#xff0c;“从本次提交撤销”&#xff0c;文件变更…

RocketMQ重置消费位点源码分析

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 最近在使用RocketMQ的重置消费位点的时候经常出现报错&#xff0c;所以就打算研究下RocketMQ是如何重置消费者的消费位点的 RocketMQ版本 5.1.0Dashboard…

基于matlab使用虚幻引擎模拟环境设计激光雷达SLAM算法(附源码)

一、前言 此示例演示如何记录来自 3D 仿真环境的合成激光雷达传感器数据&#xff0c;以及如何使用记录的数据开发同步定位和映射 &#xff08;SLAM&#xff09; 算法。 自动驾驶工具箱在Simulink中集成了虚幻引擎模拟环境。与此仿真环境相关的 Simulink 模块可以在库中找到。…

C++常用库函数——表

文章目录 1、常用数学函数2、常用字符串处理函数3、其他常用函数4、实现键盘和文件输入/输出的成员函数 1、常用数学函数 头文件 #include 或者 #include <math.h> 2、常用字符串处理函数 头文件 #include 或者 #include <string.h> 3、其他常用函数 头文件#i…

电动汽车充电站监控系统设计_kaic

1 绪论 1.1 引言 汽车工业的告诉发展&#xff0c;汽车带来的环境污染、能源短缺、资源枯竭和安全等方面的问题越来越突出。为了保持国民经济的可持续发展&#xff0c;保护人类居住环境和能源供给&#xff0c;各国政府不惜巨资&#xff0c;投入大量人力、物力&#xff0c;寻…

Docker更新后无法启动容器

前提&#xff1a; 由于使用的操作系统版本比较低&#xff0c;centos7.3&#xff0c;准备更新操作系统&#xff0c;随后执行了yum update 操作&#xff0c;结果&#xff0c;docker也从忘记了的某个版本更新到了最新的 24版本&#xff0c;导致使用的容器也没有了&#xff0c;这下…

【离散数学】实践三 PageRank体验

文章目录 PageRank算法工作原理简化版本完整版本 graphs分析graphs代码 [^4] 结语 PageRank算法工作原理 算法原理1 简化版本 若页面B,C,D…N都有链接到页面A上&#xff0c;则页面A的PageRank值如下&#xff1a; P R ( A ) ( P R ( B ) L ( B ) P R ( C ) L ( C ) P R (…

ES6: 模版字符串

前言: ES5 中我们表示字符串的时候使用 或者 "" 作用: 在 ES6 中&#xff0c;我们还有一个东西可以表示字符串&#xff0c;就是 &#xff08;反引号&#xff09; let str hello worldconsole.log(typeof str) // string和单引号还有双引号的区别: 反引号可以换行…

【设计模式】设计模式简介+七大设计原则介绍

设计模式介绍 简介 设计模式是对软件设计中普遍存在(反复出现) 的各种问题&#xff0c;所提出的解决方案。 为什么学习设计模式 软件要做大&#xff0c;要先进行设计&#xff0c;才能保证其有高的稳定性、扩展性&#xff08;容易按照新的需求添加功能&#xff09;、复用性&…

MySQL-分库分表详解(五)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

前后端跨域的解决方案

对于使用Spring Boot和Vue的前后端分离项目&#xff0c;下面介绍四种常见的解决跨域问题的方式&#xff0c;并分别从Java后端的两种权限配置方法、前端代理、以及Nginx代理进行说明&#xff1a; 方案提供 使用Spring Boot的权限配置方法&#xff1a; CorsFilter过滤器&#xf…

ChatGPT 最佳实践指南之:提供参考文本

Provide reference text 提供参考文本 GPTs can confidently invent fake answers, especially when asked about esoteric topics or for citations and URLs. In the same way that a sheet of notes can help a student do better on a test, providing reference text to G…

图论之寻找桥边

目录 ①基准法 ②并查集 ③逆向思维之标记环边 ④并查集压缩路径 ①基准法 在图论中&#xff0c;一条边被称为“桥”代表这条边一旦被删除&#xff0c;这张图的连通块数量会增加。等价地说&#xff0c;一条边是一座桥当且仅当这条边不在任何环上。一张图可以有零或多座桥。…

FFmpeg5.0源码阅读—— av_read_frame

摘要&#xff1a;本文主要描述了FFmpeg中用于打开编解码器接口av_read_frame的具体调用流程&#xff0c;详细描述了该接口被调用时所作的具体工作。   关键字&#xff1a;ffmpeg、av_read_frame   读者须知&#xff1a;读者需要了解FFmpeg的基本使用流程&#xff0c;以及一…

JVM理论(二)类加载子系统

类加载流程 类加载流程 类加载器子系统负责从文件系统或者网络中加载class文件,class文件的文件头有特定的文件标识(CAFEBABE是JVM识别class文件是否合法的依据)classLoader只负责文件的加载,而执行引擎决定它是否被执行加载类的信息存放在运行时数据区的方法区中,方法区还包括…