Qt第一個小程序(使用vs2017開發)


划重點:

       在vs里面使用c++和qt designer開發一個動態計算加法的小工具。

       最近想做一個界面,而且QT也是自己一直想學的東西,於是就查了一下python+qt和c++與Qt開發的方法。這篇文章就是使用c++開發QT界面。網上關於QT的開發文章眼花繚亂,因為可以在qt creater里面使用c++或者qt designer設計界面,也可以在vs里面使用c++或者qt designer設計幾面,花了不少時間弄清楚c++與QT的關系。所以寫下此篇博文,方便使用c++開發QT界面的童鞋入門。

       Qt是一個1991年由Qt Company開發的跨平台C++圖形用戶界面應用程序開發框架。你可以通過在QT 的creater軟件中使用c++語言進行界面和邏輯的編寫,也可以在VS里面進行QT界面的開發,這里我介紹的是后者。在一個工程里面,加入界面設計。Anyway,QT就是一個C++框架,所以C++的規則都可以在這里實現,你所看到的不同於C++的東西也是通過C++編寫,封裝在框架里面的。當然我們也可以在vs里面使用c++語言直接寫界面,但是我覺得qt designer對控件進行布局,省下了很多代碼。下面是c++結合qt designer的代碼設計過程。

在進行開發前,你需要確保安裝了開發環境:

1、安裝好QT

https://www.qt.io/download這是QT的官網,選擇go open source去下載安裝就行。

 

 

2、安裝好VS

3、在VS里面配置好QT.(可以參考https://blog.csdn.net/u014265347/article/details/54972611)

(本工程用的開發環境是vs2015+qt5.10.1)

       這篇博客的項目是QT官網教程上的一個使用qt designer設計界面的程序,我們將在VS2015里面使用qt designer設計界面,然后使用c++設計邏輯。

首先打開VS2015,建立工程文件addTool,然后一直點擊“next”直到“finish”結

工程創建成功后,在vs2015的界面里面,顯示創建了一下幾個文件:

 

 

 其中,我們會對其進行編輯的文件有:

addTool.ui     qt designer進行界面設計的文件;

addTool.cpp   編寫具體槽函數等;

addTool.h     對界面類進行申明;

下圖是加法器實現效果界面,需要用到兩個spin控件、1個5個Label和1個Text Browser。當我們改變spin控件的數值時,在Text Browser會顯示當前時刻兩個加數的和。

 

首先雙擊addTool.ui ,我們可以通過Widget Box查找這些控件。

  

因為在代碼中用到輸入、輸出控件變量,所以我們在拖出控件后,按下面的方法修改控件的名字:

即要修改控件的名字,然后在程序中的ui類進行調用該名字(變量)

選中控件,在右側的屬性欄里面,找到objectName,把名字由spinBox給成add1。

 修改后:

 

使用同樣的方法,把輸入的兩個spin控件變量名分別為add1、add2,輸出的控件Text Browser變量名為result。

現在回到我們的編程。現在我們要解決的問題,就是把對控件的操作跟我們的代碼關聯起來。這里我們主要解決兩個問題:

1、控件的值改變時,怎樣實現更新加法值並顯示到TextBrowser上?

2、控件的變量怎樣映射的類中? 

        首先,打開.h文件,我們可以看到Ui::addToolClass ui

 

 

所有界面的變量(控件的名字),可以理解為ui的成員變量。這樣第一個問題就解決了。

要想解決第二個問題,我們要理解qt里面的一個機制—“信號槽”。簡單的說,假如界面有一個按鈕,點擊就會彈出對話框,那么”點擊”這個動作就是信號,“彈出對話框”的實現就是通過槽做到的。如果我們不通過qt designer來設計界面,只使用c++語言來寫界面的話,就需要用到connect函數,但是我們使用qt desgner來設計界面就不需要了,只需要在slots添加函數,下面是程序。

addTool.h,在這個文件里面,添加構造函數和槽函數。

 1 #pragma once
 2 
 3 #include <QtWidgets/QMainWindow>
 4 #include "ui_addTool.h"
 5 
 6 class addTool : public QMainWindow
 7 {
 8 Q_OBJECT
 9 
10 public:
11 addTool(QWidget *parent = Q_NULLPTR);
12 ~addTool();
13 
14 private:
15 Ui::addToolClass ui;
16 
17 private slots:
18 void add1_valueChanged(int value);
19 void add2_valueChanged(int value);
20 };
addTools.h

addTool.cpp 具體的函數實現

 1 #include "addTool.h"
 2 
 3 addTool::addTool(QWidget *parent)
 4 : QMainWindow(parent)
 5 {
 6 ui.setupUi(this);
 7 }
 8 
 9 
10 addTool::~addTool()
11 {
12 
13 }
14 
15 void addTool::add1_valueChanged(int value)
16 {
17 ui.result->setText(QString::number(value + ui.add2->value()));
18 }
19 
20 void addTool::add2_valueChanged(int value)
21 {
22 ui.result->setText(QString::number(value + ui.add1->value()));
23 }
addTools.cpp


槽函數寫好后,我們接下來需要把控件關聯槽函數。我們雙擊addTool.ui 文件,先選中spin控件,點擊框中的那個按鈕(關聯槽函數的按鈕)

 

然后左擊控件spin,往下拖一段距離,再松開手,就會彈出控件關聯槽函數的對話框。

選擇valueChanged(int),在右側通過編輯,把我們寫的slot函數添加進來。

 

添加完畢后,選擇add1_valueChange(int)

按照同樣的方法,給spin2選擇槽函數add2_valueChange(int)

 

然后保存.ui文件,按ctrl+f5編譯運行工程文件,就可以看到我們的加法工具了,隨意改變spin控件的值,會實現加法運算。

(1)自己最后調試的時候,在addTools.h最后一個大括號外的分號不知道怎么沒有了,運行就出來了一大堆錯誤,加上就可以正確運行了

(2)可以設置可輸入數值的最大值和最小值

 


原文:https://blog.csdn.net/jiangjieqazwsx/article/details/80084557


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM