将默认提供的程序都注释上意义
0101.pro
QT += core gui
#QT表示要引入的类库 core:核心库 gui:图形化界面库
#如果要使用其他库类中的相关函数,则需要加对应的库类后,才能使用
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#QT超过版本4时,会自动加上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 += \
main.cpp \
widget.cpp
#管理头文件
HEADERS += \
widget.h
#管理所有ui文件
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
widget.h
#ifndef WIDGET_H
#define WIDGET_H
//防止头文件重复包含
#include <QWidget>
//ui_mywnd.h中的命名空间的声明
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; } //将其他文件中的命名空间进行声明
QT_END_NAMESPACE
//自定义的类声明,公共继承自QWidget:QWidget中封装了有关图形化界面的相关操作的具体实现
//由于继承的是系统提供的类,那么自定义的类中即使没有写任何东西,其类中也有很多成员
class Widget : public QWidget
{
Q_OBJECT //信号与槽的源对象,直接写即可。没有该宏,就不能使用信号与槽
public:
Widget(QWidget *parent = nullptr); //构造函数的声明
~Widget(); //析构函数的声明,虚析构函数
private:
Ui::Widget *ui; //成员属性,指针
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
//文件包含自定义的头文件,该头文件中包含了图形化界面类
#include <QApplication>
//包含应用程序的头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //使用应用程序实例化对象调用有参构造
Widget w; //使用自定义的类调用无参构造在栈区构造一个界面对象
w.show(); //调用对象的成员函数,将界面展示出来
return a.exec();
//a.exec():使用应用程序类对象,调用应用程序的成员函数,保证界面不被关闭,轮询等待界面上的事件发生
//等待用户操作界面上的组件
//等待界面上的信号与槽的响应
//等待事件处理机制的实现
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
//构造函数的定义
Widget::Widget(QWidget *parent)
: QWidget(parent) //在子类的初始化列表中显式调用父类的有参构造,来完成对子类从父类继承下来的成员的初始化
, ui(new Ui::Widget) //给自己的类中的指针成员实例化空间
{
ui->setupUi(this); //将ui界面上拖拽的组件展示到this界面上
}
//析构函数的定义
Widget::~Widget()
{
delete ui; //释放ui界面申请的组件空间
}
使用代码的形式实现登录框
#include "code1.h"
#include<QDebug>
#include<QIcon>
#include<QPushButton>
#include<QLineEdit>
#include<QLabel>
code1::code1(QWidget *parent)
: QWidget(parent)
{
this->setWindowTitle("lili's window");
this->setWindowIcon(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/f54cccba4ab9b9122909fb0e0a4f3d3.jpg"));
this->setMaximumSize(800,600);
this->setMinimumSize(400,300);
this->setFixedSize(500,400);
//this->resize(800,600);
//this->set(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/7adcf1a6baf7073e8434ae912bbb52a.png"));
this->setWindowOpacity(0.9);
this->move(400,300);
QPushButton *btn1=new QPushButton(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/12067205a1d2c773274d113ab9594f8.jpg"),"登录",this);
btn1->resize(60,30);
btn1->move(150,300);
btn1->setStyleSheet("color:white;background:pink;border-radius:10px;");
QPushButton *btn2=new QPushButton("注册",this);
btn2->resize(btn1->size());
btn2->move(btn1->x()+btn1->width()+70,btn1->y());
btn2->setStyleSheet("color:white;background:pink;border-radius:10px;");
btn2->setIcon(QIcon("D:/BaiduNetdiskDownload/qt/yingyong/1359e195af6400e83b7490ddae6808f.jpg"));
QLabel *lab1=new QLabel("账号:",this);
lab1->resize(50,30);
lab1->move(btn1->x()-60,btn1->y()-90);
lab1->setStyleSheet("color:pink;");
QLabel *lab2=new QLabel("密码:",this);
lab2->resize(50,30);
lab2->move(btn1->x()-60,lab1->y()+40);
lab2->setStyleSheet("color:pink;");
QLineEdit *edit1=new QLineEdit(this);
edit1->resize(250,30);
edit1->move(lab1->x()+lab1->width()+10,lab1->y());
edit1->clear();
edit1->setStyleSheet("color:pink");
edit1->setAlignment(Qt::AlignCenter);
edit1->setPlaceholderText("请输入账号");
QLineEdit *edit2=new QLineEdit("密码",this);
edit2->resize(250,30);
edit2->move(edit1->x(),edit1->y()+40);
edit2->clear();
edit2->setStyleSheet("color:pink");
edit2->setAlignment(Qt::AlignCenter);
edit2->setPlaceholderText("请输入密码");
edit2->setEchoMode(QLineEdit::Password);
QLabel *lab3=new QLabel(this);
lab3->resize(500,200);
lab3->setStyleSheet("background:skyblue;");
//QMovie *movie=new QMovie("");
//lab3->setScaledContents(true);
//lab3->setPixmap(QPixmap("D:/BaiduNetdiskDownload/qt/yingyong/218f6c69c7208efb13d66d558999dec.jpg"));
lab3->setPixmap(QPixmap("D:/BaiduNetdiskDownload/qt/yingyong/7adcf1a6baf7073e8434ae912bbb52a.png"));
lab3->setScaledContents(true);
}
code1::~code1()
{
}