建設(shè)公司企業(yè)網(wǎng)站個(gè)人網(wǎng)頁(yè)怎么制作
QT介紹
- QT主要用于圖形化界面的開發(fā),QT是基于C++編寫的一套界面相關(guān)的類庫(kù),進(jìn)程線程庫(kù),網(wǎng)絡(luò)編程的庫(kù),數(shù)據(jù)庫(kù)操作的庫(kù),文件操作的庫(kù)…
- QT是一個(gè)跨平臺(tái)的GUI圖形化界面開發(fā)工具
QT的優(yōu)點(diǎn)
- 跨平臺(tái),具有較為完備的圖形開發(fā)庫(kù),所能想到的圖形的實(shí)現(xiàn)基本都有,比window的MFC的庫(kù)更強(qiáng)大
- 接口的封裝性好,易上手,學(xué)習(xí)QT框架對(duì)學(xué)習(xí)計(jì)算機(jī)圖形框架有很重要的參考意義
- QT內(nèi)部基本上有一套自己的簡(jiǎn)易好用的內(nèi)存回收機(jī)制,對(duì)提高C++水平有幫助
- 有很好的社區(qū)環(huán)境,市場(chǎng)份額在緩慢上升
- 輕量級(jí)的開發(fā)環(huán)境,可以做嵌入式開發(fā)
練習(xí)
完成一個(gè)登錄界面的界面組件設(shè)置
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton> //按鈕組件頭文件
#include <QLabel> //標(biāo)簽組件頭文件
#include <QLineEdit> //行編輯器組件頭文件
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//設(shè)置窗口this->resize(540,410); //設(shè)置窗口大小this->setWindowTitle("奕書聊天室");//設(shè)置窗口標(biāo)題this->setWindowIcon(QIcon("C:\\Users\\W\\Desktop\\icon\\wodepeizhenshi.png"));//設(shè)置登錄按鈕組件QPushButton *btn1 = new QPushButton(QIcon("C:\\Users\\W\\Desktop\\icon\\login.png"),"登錄",this);//設(shè)置按鈕組件的圖標(biāo),文本內(nèi)容,和讓其在當(dāng)前界面顯示btn1->move(240,340); //設(shè)置按鈕組件的位置btn1->resize(80,40); //設(shè)置按鈕組件的大小// btn1->setEnabled(false); //設(shè)置按鈕不可點(diǎn)擊//設(shè)置取消按鈕組件QPushButton *btn2 = new QPushButton(QIcon("C:\\Users\\W\\Desktop\\icon\\cancel.png"),"取消",this);//設(shè)置按鈕組件的圖標(biāo),文本內(nèi)容,和讓其在當(dāng)前界面顯示btn2->move(340,340);btn2->resize(80,40);// btn2->setEnabled(false);//設(shè)置LOGOQLabel *lab1 = new QLabel(this);lab1->setPixmap(QPixmap("C:\\Users\\W\\Desktop\\1.png"));lab1->resize(540,180);lab1->setScaledContents(true);//設(shè)置行編輯器 賬號(hào)QLineEdit * edit1 = new QLineEdit(this);edit1->resize(220,40);edit1->move(180,220);edit1->setPlaceholderText("QQ號(hào)碼/手機(jī)/郵箱");//設(shè)置占位符//edit1->setEchoMode(QLineEdit::Password);//設(shè)置行編輯器 密碼QLineEdit * edit2 = new QLineEdit(this);edit2->resize(220,40);edit2->move(180,280);edit2->setPlaceholderText("密碼");//設(shè)置占位符edit2->setEchoMode(QLineEdit::Password);//設(shè)置密文顯示//設(shè)置賬號(hào)的LOGOQLabel *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); //設(shè)置圖片內(nèi)容自適應(yīng)//設(shè)置賬號(hào)的LOGOQLabel *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); //設(shè)置圖片內(nèi)容自適應(yīng)
}
MainWindow::~MainWindow()
{delete ui;
}
對(duì)QT編寫文件進(jìn)行注釋理解
.pro文件
QT += core gui
#在進(jìn)行編程時(shí)QT工程需要的庫(kù) core是核心庫(kù),gui是圖形化界面相關(guān)的庫(kù)greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#當(dāng)版本超過(guò)4.0會(huì)添加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#用來(lái)管理源文件(Sources下的文件)
SOURCES += \ main.cpp \mywindow.cpp#用來(lái)管理頭文件(Headers下的文件)
HEADERS += \mywindow.h#用來(lái)管理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 //防止頭文件重復(fù)#include <QWidget> //QWidget類所在的頭文件,父類頭文件QT_BEGIN_NAMESPACE
namespace Ui { class Mywindow; } //命名空間的聲明
QT_END_NAMESPACE//定義屬于自己的類,Mywindow是類名,公共繼承于QWidget
class Mywindow : public QWidget
{Q_OBJECT //信號(hào)與槽的元對(duì)象public:Mywindow(QWidget *parent = nullptr); //聲明構(gòu)造函數(shù),并定義一個(gè)默認(rèn)參數(shù)~Mywindow(); //聲明析構(gòu)函數(shù)private:Ui::Mywindow *ui; //通過(guò)ui指針查找ui界面中的組件
};
#endif // MYWINDOW_H
mywindow.cpp文件
#include "mywindow.h" //頭文件
#include "ui_mywindow.h" //ui界面對(duì)應(yīng)的頭文件//構(gòu)造函數(shù)的定義
Mywindow::Mywindow(QWidget *parent): QWidget(parent) //顯性調(diào)用父類的構(gòu)造函數(shù)完成子類從父類繼承的成員的初始化, ui(new Ui::Mywindow) //對(duì)類中的指針成員開辟空間
{ui->setupUi(this); //為ui界面中拖拽出來(lái)的組件開辟空間
}Mywindow::~Mywindow() //定義析構(gòu)函數(shù)
{delete ui; //釋放ui指針
}
main.cpp文件
#include "mywindow.h" //頭文件#include <QApplication> //應(yīng)用程序的頭文件int main(int argc, char *argv[])
{QApplication a(argc, argv); //實(shí)例化一個(gè)應(yīng)用程序的對(duì)象,調(diào)用有參構(gòu)造Mywindow w; //在棧區(qū)實(shí)例化一個(gè)類對(duì)象w.show(); //調(diào)用show函數(shù)展示界面,是父函數(shù)提供的QWidgetreturn a.exec();//為了阻塞界面不被關(guān)系,等待相關(guān)事情的發(fā)生//等待信號(hào)與槽、事件處理、等待用戶操作
}