0
点赞
收藏
分享

微信扫一扫

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

探头的新芽 2023-07-13 阅读 95

Linux 学习记录47(QT篇)

在这里插入图片描述

本文目录

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

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

举报

相关推荐

0 条评论