QT的介绍和优点,以及使用QT初步完成一个登录界面

QT介绍

  • QT主要用于图形化界面的开发,QT是基于C++编写的一套界面相关的类库,进程线程库,网络编程的库,数据库操作的库,文件操作的库…
  • QT是一个跨平台的GUI图形化界面开发工具

QT的优点

  • 跨平台,具有较为完备的图形开发库,所能想到的图形的实现基本都有,比window的MFC的库更强大
  • 接口的封装性好,易上手,学习QT框架对学习计算机图形框架有很重要的参考意义
  • QT内部基本上有一套自己的简易好用的内存回收机制,对提高C++水平有帮助
  • 有很好的社区环境,市场份额在缓慢上升
  • 轻量级的开发环境,可以做嵌入式开发

练习

完成一个登录界面的界面组件设置

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton> //按钮组件头文件
#include <QLabel> //标签组件头文件
#include <QLineEdit> //行编辑器组件头文件
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //设置窗口
    this->resize(540,410); //设置窗口大小
    this->setWindowTitle("奕书聊天室");//设置窗口标题
    this->setWindowIcon(QIcon("C:\\Users\\W\\Desktop\\icon\\wodepeizhenshi.png"));
    //设置登录按钮组件
    QPushButton *btn1 = new QPushButton(QIcon("C:\\Users\\W\\Desktop\\icon\\login.png"),
                                               "登录",
                                               this);//设置按钮组件的图标,文本内容,和让其在当前界面显示
    btn1->move(240,340);  //设置按钮组件的位置
    btn1->resize(80,40);  //设置按钮组件的大小
   // btn1->setEnabled(false); //设置按钮不可点击
    //设置取消按钮组件
    QPushButton *btn2 = new QPushButton(QIcon("C:\\Users\\W\\Desktop\\icon\\cancel.png"),
                                               "取消",
                                               this);//设置按钮组件的图标,文本内容,和让其在当前界面显示
    btn2->move(340,340);
    btn2->resize(80,40);
   // btn2->setEnabled(false);
    //设置LOGO
    QLabel *lab1 = new QLabel(this);
    lab1->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\1.png"));
    lab1->resize(540,180);
    lab1->setScaledContents(true);
    //设置行编辑器 账号
    QLineEdit * edit1 = new QLineEdit(this);
    edit1->resize(220,40);
    edit1->move(180,220);
    edit1->setPlaceholderText("QQ号码/手机/邮箱");//设置占位符
    //edit1->setEchoMode(QLineEdit::Password);
    //设置行编辑器 密码
    QLineEdit * edit2 = new QLineEdit(this);
    edit2->resize(220,40);
    edit2->move(180,280);
    edit2->setPlaceholderText("密码");//设置占位符
    edit2->setEchoMode(QLineEdit::Password);//设置密文显示
    //设置账号的LOGO
    QLabel *lab2 = new QLabel(this);
    lab2->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\icon\\userName.jpg"));
    lab2->resize(50,40);
    lab2->move(edit1->x()-85,edit1->y());
    lab2->setScaledContents(true); //设置图片内容自适应
    //设置账号的LOGO
    QLabel *lab3 = new QLabel(this);
    lab3->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\icon\\passwd.jpg"));
    lab3->resize(50,40);
    lab3->move(edit2->x()-85,edit2->y());
    lab3->setScaledContents(true); //设置图片内容自适应
}
MainWindow::~MainWindow()
{
    delete ui;
}


在这里插入图片描述
对QT编写文件进行注释理解
.pro文件

QT       += core gui
#在进行编程时QT工程需要的库 core是核心库,gui是图形化界面相关的库

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#当版本超过4.0会添加widgets

CONFIG += c++11
#该版本支持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下的文件)
SOURCES += \  
    main.cpp \
    mywindow.cpp

#用来管理头文件(Headers下的文件)
HEADERS += \
    mywindow.h

#用来管理ui文件(Froms下的文件)
FORMS += \
    mywindow.ui

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

.h文件

#ifndef MYWINDOW_H
#define MYWINDOW_H //防止头文件重复

#include <QWidget>  //QWidget类所在的头文件,父类头文件

QT_BEGIN_NAMESPACE
namespace Ui { class Mywindow; } //命名空间的声明
QT_END_NAMESPACE

//定义属于自己的类,Mywindow是类名,公共继承于QWidget
class Mywindow : public QWidget
{
    Q_OBJECT //信号与槽的元对象

public:
    Mywindow(QWidget *parent = nullptr); //声明构造函数,并定义一个默认参数
    ~Mywindow();  //声明析构函数

private:
    Ui::Mywindow *ui; //通过ui指针查找ui界面中的组件
};
#endif // MYWINDOW_H

mywindow.cpp文件

#include "mywindow.h"  //头文件
#include "ui_mywindow.h"  //ui界面对应的头文件

//构造函数的定义
Mywindow::Mywindow(QWidget *parent)
    : QWidget(parent)  //显性调用父类的构造函数完成子类从父类继承的成员的初始化
    , ui(new Ui::Mywindow) //对类中的指针成员开辟空间
{
    ui->setupUi(this); //为ui界面中拖拽出来的组件开辟空间
}

Mywindow::~Mywindow() //定义析构函数
{
    delete ui; //释放ui指针
}


main.cpp文件

#include "mywindow.h" //头文件

#include <QApplication> //应用程序的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);  //实例化一个应用程序的对象,调用有参构造
    
    Mywindow w; //在栈区实例化一个类对象
    
    w.show(); //调用show函数展示界面,是父函数提供的QWidget
    
    return a.exec();//为了阻塞界面不被关系,等待相关事情的发生
                    //等待信号与槽、事件处理、等待用户操作
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值