划重點:
在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 };
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 }
槽函數寫好后,我們接下來需要把控件關聯槽函數。我們雙擊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