QT-第一個程式 Hello QT , 以及QT creator介紹

来源:https://www.cnblogs.com/lifexy/archive/2018/04/16/8859062.html
-Advertisement-
Play Games

第一個程式 - Hello QT 首先寫main.cpp: win平臺上,命令行編譯 進入main.cpp所在目錄“1.Hello QT”,輸入: 接下來,進入debug文件,運行1.exe: 如果想刪除配置: linux平臺上,命令行編譯 同樣輸入: 運行: 3.使用Qt creator編譯 註意 ...


第一個程式 - Hello QT

首先寫main.cpp:

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>

int main(int argc, char* argv[])
{
  QApplication a(argc, argv);    // Qapplication表示一個應用程式,而它的成員函數exec()則用來執行程式以及消息處理
  QMainWindow w; //定義一個QmainWindow主視窗對象w   QPushButton b(&w); //通過&w,在主視窗上定義QpushButton按鈕對象b
  b.setText("Hello QT!"); //通過b對象的成員函數setText(),設置按鈕名字為Hello QT   w.show(); //顯示主視窗
  return a.exec(); //通過exec()執行程式以及消息處理 }

win平臺上,命令行編譯

進入main.cpp所在目錄“1.Hello QT”,輸入:

qmake   -project                              //通過-project參數,將源碼生成(*.pro)工程文件
qmake                                         //根據工程文件生成makefile
make                                          //根據makefile進行編譯,生成debug文件夾

接下來,進入debug文件,運行1.exe:

 

如果想刪除配置:

make clean                                       //刪除配置文件,如果想再次編譯,只需要make即可
make distclean                                  //刪除配置文件以及make,如果想再次編譯,可以通過qmake和make

 

linux平臺上,命令行編譯

同樣輸入:

qmake   -project                                   //通過-project參數,將源碼生成(*.pro)工程文件
qmake                                              //根據工程文件生成makefile
make                                               //根據makefile進行編譯,生成可執行文件

運行:

 

 

3.使用Qt creator編譯

註意:構建項目時,如果出現以下問題,則可能環境變數未設置好,或者環境變數的qt路徑前面有 “(” 或 “)” 字元,從而導致:Interrupt/Exception caught code = 0xc00000fd

 

 

調試

調試分為兩種

列印調試

頭文件 #include <QDebug>

比如列印5,代碼里輸入:

qDebug()<<5;

 

斷點調試

除了設置普通斷點外,還可以設置條件斷點(指程式滿足條件,將會暫停)

如下圖所示,在第17行處設斷點:

 

然後設置17行處的斷點的條件為i==3:

開始調試

從列印處可以看到,代碼運行到i=3時便暫停了:

 

 

 

QT creator介紹

構建(bulid)

對項目中所有文件進行編譯,最終生成可執行程式

Debug

用來進行調試的版本,程式中會包含調試信息,所以運行效率低

Release

最終發佈的版本,無調試信息,運行效率高

 

 

QT Creator工程介紹

 

 

.pro項目描述文件

其本質就是一個簡化的Makefile,通過不同平臺的qmake生成不同平臺的Makefile,如下圖所示:

 

 

 

.pro項目描述文件介紹

基本構成如下圖所示:

 

 

高級變數如下圖所示:

 

其中CONFIG的常用選項有:

  • debug  :  構建debug版本的可執行程式
  • release : 構建release版本的可執行程式
  • debug_and_release  :  同時構建debug和release版本
  • wran_on  :  儘可能多的輸出警告信息
  • wran_off  :  不輸出警告信息

 

通過上面的學習,我們就能看懂下麵的.pro項目描述文件了:

QT += core gui                      #添加core和gui模塊(QT不僅只涉及顯示模塊,還有資料庫,多線程,網路等等)

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  #如果當前版本大於4.0,則需要widgets模塊

TARGET = HelloWorld            #以win平臺為例,生成的程式為:HelloWorld.exe

TEMPLATE = app                 #聲明編譯出來的是app程式,而不是庫文件

INCLUDEPATH += E:/BCC/include \        #指定頭文件路徑
               E:/VC/include

SOURCES += Main.cpp \                 #源文件
           HelloWorld.cpp

HEADERS += HelloWorld.h              #頭文件名

FORMS   += HelloWorld.ui              #指定界面描述文件

RC_FILE += MyIco.rc                #指定資源文件,比如圖片

LIBS    += -LE:/vlc-1.11/sdk/lib           #指定外部庫

CONFIG  += warn_on debug                   #構建debug版本,並輸出警告信息

#
# if 'debug' option is set for CONFIG
#
CONFIG(debug) {                               #如果CONFIG有debug選項
    DEFINES += DEBUG_LOG                      #則定義: #define DEBUG_LOG
    SOURCES += DebugLog.cpp                   #並添加debug相關文件
    HEADERS += DebugLog.h
}

 

註意:

  • QT Creator生成的.pro.user文件,包含的是與平臺相關的配置信息,與我們無關,不需要修改該文件
  • 移植項目時需要刪除.pro.user這個文件,需要時,再由QT Creator自動生成即可

 

 

接下來,下章繼續學習QT中的部件與坐標~

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題 之前一直用的 Laravel 5.4,資料庫也是直接寫 sql 的,感覺可定製性更強,順便鍛煉下 sql。這次改用了 Laravel 5.5,索性用遷移建庫試試,結果報錯如下: SQLSTATE[HY000]: General error: 1215 Cannot add foreign ke ...
  • `python 網路爬蟲` 概述 這是一個簡單的python爬蟲程式,僅用作技術學習與交流,主要是通過一個簡單的實際案例來對網路爬蟲有個基礎的認識。 什麼是網路爬蟲 簡單的講,網路爬蟲就是模擬人訪問web站點的行為來獲取有價值的數據。專業的解釋: "百度百科" 分析爬蟲需求 確定目標 爬取豆瓣熱度在 ...
  • 1. 涉及主要jdk api java.lang.reflect.InvocationHandler; public interface InvocationHandler { /** * Processes a method invocation on a proxy instance and r ...
  • https://blog.csdn.net/arredando/article/details/76684764 引用CSDN ...
  • 可以直接作用於for迴圈的數據類型有以下幾種: 一類是集合數據類型,如list、tuple、dict、set、str等; 一類是generator,包括生成器和帶yield的generator function。 可以直接作用於for迴圈的對象統稱為可迭代對象:Iterable。 可以使用isins ...
  • 類的載入概述 載入 就是指將class文件讀入記憶體,併為之創建一個Class對象。任何類被使用時系統都會建立一個Class對象。 連接 驗證 是否有正確的內部結構,並和其他類協調一致 準備 負責為類的靜態成員分配記憶體,並設置預設初始化值 解析 將類的二進位數據中的符號引用替換為直接引用 初始化 略 ...
  • 原文地址: "http://www.cnblogs.com/NickQ/p/8859130.html" 區塊元素 段落和換行 一個 Markdown 段落是由一個或多個連續的文本行組成 ,它的前後要有一個以上的空行(空行的定義是顯示上看起來像是空的,便會被視為空行。比方說,若某一行只包含空格和製表符 ...
  • 參考文章:https://blog.csdn.net/qq_33855133/article/details/73106176 對於配置環境變數,懂些技術的人來說,都是很簡單。 變數是在操作系統中一個具有特定名字的對象,它包含了一個或者多個應用程式所將使用到的信息。比如Windows和DOS操作系統 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...