qt程式建立及模板程式碼分析

矢月發表於2020-11-29

個人部落格

qt ver 5.14.2

qt Creator建立程式

Build System

  • Qbs市場佔有率低,將被棄用
  • qmake更輕量級
  • cmake功能強大

不繁瑣的小程式用qmake,大工程檔案用cmake更好

Details

Base class有三個選項:

  • QMainWindow
  • QWidget
  • QDialog

QMainWindow和QDialog是QWidget的子類。QWidget建立出來只有一個空白介面;QMainWindow在QWidget基礎上多了選單欄,工具欄和狀態列;QDialog對應對話方塊。

Generate form選項可以通過拖拽完成介面的設計

Translation

Translation File功能顯見

Kits

版本套件選擇,例如:Desktop對應.exe開發;UWP對應windows通用平臺開發;

qt程式組成

main.cpp

#include "mywidget.h"

#include <QApplication> // 包含一個應用程式類的標頭檔案

//main程式入口;argc命令列變數的數量;argv命令列變數的陣列
int main(int argc, char *argv[]){
    //a應用程式物件,在Qt中,應用程式物件有且僅有一個
    QApplication a(argc, argv);
    //視窗物件,myWidget父類->QWidget
    myWidget w;
    //視窗物件 預設不會顯示,必須要呼叫show方法才能顯示視窗
    w.show();
    
    //讓應用程式物件進入訊息迴圈機制,視窗不會一閃而過
    return a.exec();
}

.pro檔案

QT       += core gui //QT包含模組

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //版本號大於4所額外包含模組

CONFIG += 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 \
    mywidget.cpp

HEADERS += \	//標頭檔案
    mywidget.h

FORMS += \
    mywidget.ui

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

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H
//防止被多次include,檔案只會被編譯一次和pragma once等效

#include <QWidget>//視窗類QWidget標頭檔案

QT_BEGIN_NAMESPACE
namespace Ui { class myWidget; }
QT_END_NAMESPACE

class myWidget : public QWidget
{
    Q_OBJECT //Q_OBJECT是一個巨集,允許類中使用訊號和槽的機制

public:
    myWidget(QWidget *parent = nullptr);
    ~myWidget();

private:
    Ui::myWidget *ui;
};
#endif // MYWIDGET_H

mywidget.cpp

#include "mywidget.h"
#include "ui_mywidget.h"

//命名規範
//類名 首字母大寫,單詞和單詞之間首字母大寫
//函式名 變數名稱 首字母小寫,單詞和單詞之間首字母大寫

//快捷鍵
//註釋 ctrl + /
//執行 ctrl + r
//編譯 ctrl + b
//字型縮放 ctrl + 滑鼠滾輪
//自動對齊 ctrl + i

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::myWidget)
{
    ui->setupUi(this);
}

myWidget::~myWidget()
{
    delete ui;
}


相關文章