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



















