C++QT教程3——手冊4.11.1自帶教程(筆記)——創建一個基于Qt Widget的應用程序

文章目錄

  • 創建一個基于Qt Widget的應用程序
    • 創建Text Finder項目
      • 素材文件
    • 填補缺失的部分
      • 設計用戶界面
      • 完成頭文件
      • 完成源文件
      • 創建資源文件
    • 編譯和運行程序
  • 參考文章

創建一個基于Qt Widget的應用程序

本教程介紹如何使用Qt Creator創建一個小型Qt應用程序,名為Text Finder。它是Qt UI工具中Text Finder示例的簡化版本。應用程序的用戶界面是使用Qt Designer通過Qt小部件構建的。應用程序邏輯是通過使用代碼編輯器編寫的C++代碼。

在這里插入圖片描述

創建Text Finder項目

  1. 選擇文件 > 新建文件或項目 > 應用程序 > Qt Widgets應用程序 > 選擇。
    在這里插入圖片描述
    打開介紹和項目位置對話框。
    在這里插入圖片描述

  2. 在名稱字段中,輸入TextFinder。

  3. 在創建位置字段中,輸入項目文件的路徑。例如,C:\Qt\examples,然后點擊下一步(在Windows和Linux上)或繼續(在macOS上)。
    打開套件選擇對話框。
    在這里插入圖片描述

  4. 選擇您的項目的構建和運行套件,然后點擊下一步或繼續。

    注意:如果在工具 > 選項 > 套件(在Windows和Linux上)或Qt Creator > 首選項 >
    套件(在macOS上)中只指定了一個套件,則會跳過此對話框。

    打開類信息對話框。
    在這里插入圖片描述

  5. 在類名字段中,輸入TextFinder作為類名。

  6. 在基類列表中,選擇QWidget作為基類類型。

    注意:頭文件、源文件和表單文件字段會自動更新以匹配類的名稱。

  7. 點擊下一步或繼續。
    打開項目管理對話框。
    在這里插入圖片描述

  8. 查看項目設置,并點擊完成(在Windows和Linux上)或完成(在macOS上)創建項目。

    注意:項目將以編輯模式打開,并隱藏這些說明。要返回到這些說明,請打開幫助模式。

素材文件

TextFinder項目現在包含以下文件:

  • textfinder.h
  • textfinder.cpp
  • main.cpp
  • textfinder.ui
  • textfinder.pro
    在這里插入圖片描述

.h.cpp文件包含了必要的樣板代碼。.pro文件是完整的。

填補缺失的部分

首先設計用戶界面,然后繼續填寫缺失的代碼。最后,添加查找功能。

設計用戶界面

在這里插入圖片描述

  1. 在“項目”視圖中以編輯器模式雙擊打開textfinder.ui文件,啟動集成的Qt Designer。
  2. 將以下小部件拖放到表單中:
  • 標簽(QLabel)

  • 文本編輯框(QLineEdit)

  • 按鈕(QPushButton)
    在這里插入圖片描述

    請注意:要輕松定位小部件,請使用側邊欄頂部的搜索框。例如,要找到標簽小部件,開始鍵入“label”即可。

    在這里插入圖片描述

  1. 雙擊標簽小部件,輸入關鍵詞文本。

  2. 雙擊按鈕小部件,輸入查找文本。

  3. 在屬性窗格中,將對象名稱更改為findButton。
    在這里插入圖片描述

  4. 按下Ctrl+A(或Cmd+A)選擇小部件,點擊水平布局(或在Linux或Windows上按Ctrl+H,或在macOS上按Ctrl+Shift+H)應用水平布局(QHBoxLayout)。
    在這里插入圖片描述

  5. 拖放一個文本編輯框小部件(QTextEdit)到表單中。

  6. 選擇屏幕區域,點擊垂直布局(或按Ctrl+L)應用垂直布局(QVBoxLayout)。
    在這里插入圖片描述

    應用水平和垂直布局確保應用程序界面適應不同的屏幕尺寸。

  7. 要在用戶按下查找按鈕時調用查找函數,可以使用Qt的信號和槽機制。當特定事件發生時,會發出一個信號,而槽是響應特定信號的函數。Qt小部件具有預定義的信號和槽,可以直接在Qt Designer中使用。要為查找函數添加一個槽:

    • 右鍵點擊查找按鈕以打開上下文菜單。
    • 選擇“轉到槽”> “clicked()”,然后選擇“確定”。
      會在頭文件textfinder.h中添加一個私有槽on_findButton_clicked(),并在源文件textfinder.cpp中添加一個私有函數TextFinder::on_findButton_clicked()。
  8. 按下Ctrl+S(或Cmd+S)保存更改。

有關使用Qt Designer設計表單的更多信息,請參閱Qt Designer手冊。

完成頭文件

textfinder.h文件已經有必要的#include,一個構造函數,一個析構函數和Ui對象。你需要添加一個私有函數loadTextFile(),以讀取并顯示輸入文本文件的內容在QTextEdit中。

  1. 在編輯視圖的項目窗格中,雙擊打開textfinder.h文件進行編輯。

  2. 在private部分添加一個私有函數,在Ui::TextFinder指針后面,如下代碼片段所示:

      private slots:void on_findButton_clicked();private:Ui::TextFinder *ui;void loadTextFile();
    

完成源文件

現在頭文件已經完成,轉到源文件textfinder.cpp。

  1. 在編輯視圖的項目窗格中,雙擊打開textfinder.cpp文件進行編輯。

  2. 添加代碼使用QFile加載文本文件,用QTextStream讀取,并使用QTextEdit::setPlainText()在textEdit中顯示它。如下代碼片段所示:

      void TextFinder::loadTextFile(){QFile inputFile(":/input.txt");inputFile.open(QIODevice::ReadOnly);QTextStream in(&inputFile);QString line = in.readAll();inputFile.close();ui->textEdit->setPlainText(line);QTextCursor cursor = ui->textEdit->textCursor();cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);}
    
  3. 為了使用QFile和QTextStream,在textfinder.cpp中添加以下#include:

      #include <QFile>#include <QTextStream>
    
  4. 對于on_findButton_clicked()槽函數,添加代碼提取搜索字符串,并使用QTextEdit::find()函數在文本文件中查找該字符串。如下代碼片段所示:

void TextFinder::on_findButton_clicked()
{
QString searchString = ui->lineEdit->text();
ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
}

  1. 一旦這兩個函數都完成了,在構造函數中添加一行調用loadTextFile()的代碼,如下代碼片段所示:

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

通過這行代碼,在uic生成的ui_textfinder.h文件中會自動調用on_findButton_clicked()槽函數:

  QMetaObject::connectSlotsByName(TextFinder);

創建資源文件

你需要一個資源文件(.qrc),其中嵌入輸入文本文件。輸入文件可以是任何帶有文本段落的.txt文件。創建一個名為input.txt的文本文件,并將其存儲在textfinder文件夾中。

添加資源文件的步驟:

  1. 選擇文件 > 新建文件或項目 > Qt > Qt資源文件 > 選擇。
    在這里插入圖片描述
    打開"選擇位置"對話框。
    在這里插入圖片描述

  2. 在名稱字段中輸入textfinder。

  3. 在路徑字段中,輸入C:\Qt\examples\TextFinder,然后點擊下一步或繼續。
    打開"項目管理"對話框。
    在這里插入圖片描述

  4. 在"添加到項目"字段中,選擇TextFinder.pro,然后點擊完成或完成以在代碼編輯器中打開該文件。

  5. 選擇添加 > 添加前綴。

  6. 在前綴字段中,將默認前綴替換為斜杠(/)。

  7. 選擇添加 > 添加文件,以定位并添加input.txt。
    在這里插入圖片描述

編譯和運行程序

現在你已經擁有了所有必要的文件,點擊按鈕來編譯和運行你的程序。

參考文章

【Qt】Qt創建Qt Qt Widgets項目

用戶界面開發框架Qt 6.x入門級教程 - 創建基于Qt Widget的應用(一)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35947.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦IP地址錯誤無法上網怎么辦?

電腦出現IP地址錯誤后就將無法連接網絡&#xff0c;從而無法正常訪問互聯網。那么當電腦出現IP地址錯誤時該怎么辦呢&#xff1f; 確認是否禁用本地連接 你需要先確定是否禁用了本地網絡連接&#xff0c;如果發現禁用&#xff0c;則將其啟用即可。 啟用方法&#xff1a;點擊桌…

Spring 使用注解開發、代理模式、AOP

使用注解開發 在Spring4之后&#xff0c;要使用注解開發&#xff0c;必須要保證AOP的包導入了 項目搭建&#xff1a; 在配置文件中導入約束&#xff0c;增加注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.spri…

uniapp把城市換成26個字母和城市排序

后端返回的數據 我們要得效果 <template><view><view v-for"(value,key) in cities" :key"key"><view style"color: red;"> {{ key }} </view><view style"border: 1rpx solid black;"><tex…

PostgreSql 備份恢復

一、概述 數據庫備份一般可分為物理備份和邏輯備份&#xff0c;其中物理備份又可分為物理冷備和物理熱備&#xff0c;下面就各種備份方式進行詳細說明&#xff08;一般情況下&#xff0c;生產環境采取的定時物理熱備邏輯備份的方式&#xff0c;均是以下述方式為基礎進一步研發編…

Linux 基礎

鞏固基礎&#xff0c;砥礪前行 。 只有不斷重復&#xff0c;才能做到超越自己。 能堅持把簡單的事情做到極致&#xff0c;也是不容易的。 linux的目錄結構 linux的文件系統采用樹狀的目錄結構&#xff0c;在此結構的最上層是根目錄“/”&#xff0c; 然后在此目錄下再創建其他…

【算法——雙指針】LeetCode 1089 復寫零

千萬不要被這道題標注著“簡單”迷惑了&#xff0c;實際上需要注意的細節很多。 題目描述&#xff1a; 解題思路&#xff1a; 正序遍歷&#xff0c;確定結果數組的最后一個元素所在的位置&#xff1b;知道最后一個元素的位置后倒序進行填充。 先找到最后一個需要復寫的數 先…

javaee dom4j讀取xml文件

引入jar包 dom4j-1.6.1.jar 創建xml文件 <?xml version"1.0" encoding"UTF-8"?> <books><book id"1"><title ID"t1">背影</title><price>88</price><author>三毛</author>…

Excel表格制作,快速提升效率好方法!

“作為一個剛開始工作的職場新人&#xff0c;每天要做各種不同的表格&#xff0c;真的讓我很崩潰&#xff0c;感覺我對這些表格制作一點都不了解&#xff0c;Excel表格制作有什么比較好的方法嗎&#xff1f;” Excel作為一款廣泛應用于各個領域的管理和分析工作&#xff0c;給我…

【STM32】FreeRTOS消息隊列和信號量學習

一、消息隊列&#xff08;queue&#xff09; 隊列是一種用于實現任務與任務之間&#xff0c;任務與中斷之間消息交流的機制。 注意&#xff1a;1.數據的操作是FIFO模式。 2.隊列需要明確數據的大小和隊列的長度。 3.寫和讀都會出現堵塞。 實驗&#xff1a;創建一個消息隊列…

解決 Oracle 數據庫中表被鎖問題的方案和方法

我們經常會遇到表被鎖的情況&#xff0c;這可能會嚴重影響數據庫的性能和可用性。我將與大家分享如何識別、分析和解決這些問題&#xff0c;以及如何使用特定的 SQL 查詢來執行解鎖操作。 了解表鎖的原因 首先&#xff0c;讓我們來了解一下導致表被鎖的常見原因。長時間運行的…

(四)Unity開發Vision Pro——參考文檔

4.參考文檔 4.1 支持的功能和組件 4.1.1 支持的 Unity 功能和組件 大多數 Unity 組件無需修改即可在此平臺上運行 - 包括大多數自定義 MonoBehaviours、動畫邏輯、物理、輸入處理、資產管理、AI 等。然而&#xff0c;需要渲染的組件需要特殊的支持。因此&#xff0c;一些組件…

qt5.15.2 使用mysql8.1

報錯&#xff1a; QMYSQL driver not loaded 報錯&#xff1a;無 QMYSQL 使用 QStringList drivers QSqlDatabase::drivers(); //獲取現在可用的數據庫驅動 foreach(QString driver, drivers) qDebug() << driver; “QSQLITE” “QMARIADB” “QMYSQL” “QMYSQL3” “…

Linux常用命令——dmidecode命令

在線Linux命令查詢工具 dmidecode 在Linux系統下獲取有關硬件方面的信息 補充說明 dmidecode命令可以讓你在Linux系統下獲取有關硬件方面的信息。dmidecode的作用是將DMI數據庫中的信息解碼&#xff0c;以可讀的文本方式顯示。由于DMI信息可以人為修改&#xff0c;因此里面…

網絡編程的使用

文章目錄 基礎代碼URL類進行傳輸編碼解碼 協議TCPUDPhttp PORT端口協議的實現TCPUDP 模擬服務器 基礎代碼 最后一個是&#xff1a;只要再timeout時間內連接上就是true URL類 導了一個common-iojar包&#xff0c;那個IOUtils就是那個里面的工具類 進行傳輸編碼解碼 協議 TC…

多線程:線程池

線程池 提前創建多個線程放入線程池中&#xff0c;使用時直接獲取&#xff0c;使用完直接放入池中&#xff1b;可以避免頻繁創建銷毀&#xff0c;實現重復利用&#xff0c;類似生活中的公共交通工具。好處&#xff1a;提高相應速度&#xff1b;降低資源消耗&#xff1b;便于線…

【Spring Cloud +Vue+UniApp】智慧建筑工地平臺源碼

智慧工地源碼 、智慧工地云平臺源碼、 智慧建筑源碼支持私有化部署&#xff0c;提供SaaS硬件設備運維全套服務。 前言&#xff1a;互聯網建筑工地&#xff0c;是將互聯網的理念和技術引入建筑工地&#xff0c;從施工現場源頭抓起&#xff0c;最大程度的收集人員、安全、環境、材…

微信小程序調用map數據 并在wxml中對數組進行截取的操作

wxs文件的位置如圖 實現數組截取 只保留五張圖片 <wxs module"filter" src"./slicefunc.wxs"></wxs> <view class"wrap"><view class"search-box" bindtap"toSearch"><view class"v1"…

【幾個python虛擬環境會遇到的問題】

幾個python虛擬環境會遇到的問題 twine is not recognized as an internal or external command,operable program or batch file.setup命令不報錯但不起作用pipreqs is not recognized as an internal or external command,operable program or batch file. ‘twine’ is not …

快遞管理系統springboot 寄件物流倉庫java jsp源代碼mysql

本項目為前幾天收費幫學妹做的一個項目&#xff0c;Java EE JSP項目&#xff0c;在工作環境中基本使用不到&#xff0c;但是很多學校把這個當作編程入門的項目來做&#xff0c;故分享出本項目供初學者參考。 一、項目描述 快遞管理系統springboot 系統有1權限&#xff1a;管…

11. Docker Swarm(二)

1、前言 上一篇中我們利用Docker Swarm搭建了基礎的集群環境。那么今天我們就來驗證以下該集群的可用性。上一篇的示例中&#xff0c;我創建了3個實例副本&#xff0c;并且通過訪問http://192.168.74.132:8080得到我們的頁面。 2、驗證高可用 1&#xff09;我們可以通過以下命…