1.实现图形化界面
#include "widget.h"
#include "ui_widget.h"
#include <QDebug> //输出函数对应的头文件
#include <QIcon>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setFixedSize(540,410); //设置固定尺寸this->setWindowTitle("小徐的聊天室"); //窗口标题this->setWindowIcon(QIcon("C:/Users/潇潇小仙女/Desktop/icon/wodepeizhenshi.png")); //设置窗口的icon//1、实例化标签QLabel *lab1 = new QLabel("LOGO",this);lab1->resize(540,205);lab1->setPixmap(QPixmap("C:/Users/潇潇小仙女/Desktop/icon/logo.png"));lab1->setScaledContents(true); //设置内容自适应QLabel *lab2 = new QLabel("账号",this);lab2->resize(35,35);lab2->move(115,230);lab2->setPixmap(QPixmap("C:/Users/潇潇小仙女/Desktop/icon/userName.jpg"));lab2->setScaledContents(true);QLabel *lab3 = new QLabel("密码",this);lab3->resize(35,35);lab3->move(lab2->x(),lab2->y()+65);lab3->setPixmap(QPixmap("C:/Users/潇潇小仙女/Desktop/icon/passwd.jpg"));lab3->setScaledContents(true);//2、构造行编辑器,构造时给定父组件QLineEdit *edit1 = new QLineEdit(this);edit1->setPlaceholderText("QQ/手机/邮箱"); //设置编辑器的占位文本edit1->resize(230,40); //设置尺寸edit1->move(lab2->x()+80,lab2->y()); //移动位置edit1->setStyleSheet("broder-color:black"); //设置样式表//3、构造行编辑器,构造时给定父组件以及文本内容QLineEdit *edit2 = new QLineEdit(this);edit2->setPlaceholderText("密码"); //设置编辑器的占位文本edit2->resize(230,40); //设置尺寸edit2->move(lab3->x()+80,lab2->y()); //移动位置edit2->resize(edit1->size());edit2->move(edit1->x(),edit1->y()+60);edit2->setEchoMode(QLineEdit::Password); //设置回显模式//4、使用无参构造添加一个按钮QPushButton *btn1 = new QPushButton; //无参构造btn1->setParent(this); //给组件指定父组件,让其依附于界面而存在btn1->setText("登录"); //给组件设置文本内容btn1->resize(QSize(90,35)); //设置按钮组件的大小btn1->move(195,360); //移动组件位置btn1->setIcon(QIcon("C:/Users/潇潇小仙女/Desktop/icon/login.png"));//5、构造按钮时,指定父组件QPushButton *btn2 = new QPushButton(this); //将当前界面设置成父组件btn2->setText("取消");btn2->resize(btn1->size()); //使用其他按钮的大小设置该组件的大小btn2->move(btn1->x()+140,btn1->y());btn2->setIcon(QIcon("C:/Users/潇潇小仙女/Desktop/icon/cancel.png")); //设置图标}
Widget::~Widget()
{delete ui;
}
2.QT工程项目各文件初始程序的介绍
①配置文件:.pro文件
QT += core gui
# QT工程所需的类库 core是核心库 gui图形化界面相关类库greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#版本超过4.0,会加上widgetsCONFIG += 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 \mywindow.cpp#管理头文件
HEADERS += \mywindow.h#管理ui文件
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
②头文件
#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
③源文件
#include "mywindow.h" //自己的头文件
#include "ui_mywindow.h" //ui界面对应的头文件MyWindow::MyWindow(QWidget *parent) //构造函数的定义: QWidget(parent) //显性调用父类的构造函数完成对子类从父类继承下来的成员的初始化工作, ui(new Ui::MyWindow) //对自己类中的指针成员开辟空间
{ui->setupUi(this); //给拖拽出来的组件实例化空间
}MyWindow::~MyWindow() //析构函数的定义
{delete ui; //释放ui指针的内存
}
④主程序
#include "mywindow.h" //图形化界面的头文件#include <QApplication> //应用程序的头文件int main(int argc, char *argv[])
{QApplication a(argc, argv); //实例化一个应用程序的对象,调用的是有参构造MyWindow w; //在栈区实例化自定义类的对象w.show(); //调用show函数,展示图形化界面,该函数是父类提供的,直接用即可return a.exec(); //为了阻塞界面不被关闭,等待相关事情发生//等待信号与槽、事件处理、等待用户操作
}