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