日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt实现一个简单的应用程序——桌面助手

發(fā)布時(shí)間:2023/12/29 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt实现一个简单的应用程序——桌面助手 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、軟件功能及涉及知識(shí)

1、實(shí)現(xiàn)不同功能之間的界面切換

2、可查看日歷

3、可實(shí)現(xiàn)計(jì)時(shí)器功能

4、可實(shí)現(xiàn)計(jì)算器功能

5、ui界面及按鈕部件背景的設(shè)置

6、為軟件設(shè)置圖標(biāo)

7、程序打包成軟件

二、效果演示

?

?

?

?三、實(shí)現(xiàn)過程

1、創(chuàng)建工程

? ? ? ? New Project -> Application -> Qt Widgets Application然后下一步,使用ui界面文件能省去很多步驟。

?點(diǎn)擊下一步、完成就創(chuàng)建好了一個(gè)包含.h、.cpp、.ui文件的工程。

因?yàn)槲覀冊诓煌慕缑嫔戏謩e實(shí)現(xiàn)查看日歷、計(jì)時(shí)器、計(jì)算器的功能,所以還需要在工程里創(chuàng)建兩個(gè).h、.cpp、.ui文件,過程如下。

?

?直接下一步、完成就創(chuàng)建成功,在以同樣的方式添加一個(gè)類名為MainWindow3的文件,結(jié)果如下。

2、工程創(chuàng)建成功,開始實(shí)現(xiàn)功能

首先要確定好在哪個(gè)文件里實(shí)現(xiàn)什么功能,我這里是在MainWindow里實(shí)現(xiàn)查看日歷功能,在MainWindow2里面實(shí)現(xiàn)計(jì)時(shí)器功能,在MainWindow3里面實(shí)現(xiàn)計(jì)算器功能。

然后就在對應(yīng)的文件里去添加需要的控件并對界面進(jìn)行合適的布局(這樣到時(shí)候控件就能隨著窗口的大小而變化),我的布局如下。

日歷界面:

?計(jì)時(shí)器界面:

計(jì)算器界面:

?需要注意每個(gè)控件對象的名稱要記住不能搞混,可以在右下角的屬性面板對應(yīng)的objectName里查看或修改,但控件要顯示的名字或內(nèi)容可以直接點(diǎn)擊控件編輯。

3、準(zhǔn)備好這一切我們就開始編寫程序

第一步、先實(shí)現(xiàn)實(shí)現(xiàn)三個(gè)界面之間可以相互切換

在上一步添加按鈕的時(shí)候,可以直接右鍵點(diǎn)擊對應(yīng)的按鈕,然后點(diǎn)擊轉(zhuǎn)到槽,因?yàn)橐獙?shí)現(xiàn)點(diǎn)擊按鈕的時(shí)候發(fā)現(xiàn)對應(yīng)的反應(yīng),所以下一步選擇clicked(),最后點(diǎn)擊ok就會(huì)在.cpp文件中生成對應(yīng)按鈕的槽函數(shù),還會(huì)在.h頭文件里自動(dòng)申明,我們只需要在槽函數(shù)里添加要實(shí)現(xiàn)的功能的代碼就可以了,代碼如下。

mainwindow.cpp

void MainWindow::on_pushButton_clicked()//計(jì)時(shí)器按鈕生成的槽函數(shù) {MainWindow2 *mainwindow2=new MainWindow2;//為 MainWindow2 窗口創(chuàng)建一個(gè)名字,方便操作它this->close();//點(diǎn)擊計(jì)時(shí)器按鈕時(shí)關(guān)閉當(dāng)前界面mainwindow2->show();//打開窗口 mainwindow2(計(jì)時(shí)器)界面 }void MainWindow::on_pushButton_4_clicked()//計(jì)算器按鈕的槽函數(shù) {MainWindow3 *mainwindow3=new MainWindow3;this->close();//點(diǎn)擊計(jì)算器按鈕時(shí)關(guān)閉當(dāng)前界面mainwindow3->show();//打開窗口 mainwindow3(計(jì)算器)界面 }

mainwindow2.cpp

void MainWindow2::on_pushButton_clicked()//日歷按鈕生成的槽函數(shù) {MainWindow *mainwindow=new MainWindow;this->close();//點(diǎn)擊日歷按鈕后關(guān)閉當(dāng)前界面mainwindow->show();//進(jìn)入mainwindow(日歷)界面 }void MainWindow2::on_pushButton_2_clicked()//計(jì)算器按鈕的槽函數(shù) {MainWindow3 *mainwindow3=new MainWindow3;this->close();//點(diǎn)擊計(jì)算器按鈕后關(guān)閉當(dāng)前界面mainwindow3->show();//進(jìn)入mainwindow3(計(jì)算器)界面 } }

mainwindow3.cpp

void MainWindow3::on_pushButton_clicked()//日歷按鈕的槽函數(shù) {MainWindow2 *mainwindow2=new MainWindow2;this->close();//點(diǎn)擊計(jì)時(shí)器按鈕時(shí)關(guān)閉當(dāng)前界面mainwindow2->show();//打開mainwindow2(計(jì)時(shí)器)界面 }void MainWindow3::on_pushButton_3_clicked()//計(jì)時(shí)器按鈕生成的槽函數(shù) {MainWindow *mainwindow=new MainWindow;this->close();//點(diǎn)擊日歷按鈕時(shí)關(guān)閉當(dāng)前界面mainwindow->show();//打開mainwindow(日歷)界面 }

不要忘了需要在對應(yīng)的文件里添加需要切換界面對應(yīng)的頭文件。

第二步、每個(gè)窗口對應(yīng)的功能

日歷界面的功能比較簡單,只是顯示日歷,只需要在ui文件中添加一個(gè)Calendar Widget部件就可以了。?

計(jì)時(shí)器界面需要使用到QTimer類,需要添加代碼如下。

mainwindow2.h

#include <QTime> #include <QTimer> QTime *time; QTimer *timer;

mainwindow2.cpp

time = new QTime; timer = new QTimer;//創(chuàng)建一個(gè)定時(shí)器 ui->Timer->setDigitCount(8);//數(shù)碼管需要顯示8個(gè) initTime(); connect(timer,SIGNAL(timeout()),this,SLOT(updateTime()));//信號(hào)與槽 connect(ui->pbStart,SIGNAL(clicked()),this,SLOT(pbStart_clicked()));//信號(hào)與槽 void MainWindow2::initTime()// {time->setHMS(0,0,0);//設(shè)置初值ui->Timer->display(time->toString("hh:mm:ss")); } void MainWindow2::updateTime()//開始計(jì)時(shí) {*time=time->addSecs(1);//每次增加1ui->Timer->display(time->toString("hh:mm:ss")); } void MainWindow2::pbStart_clicked()//start按鈕生成的槽函數(shù) {if(QString::compare(ui->pbStart->text(),"stop")){initTime();//每次開始前初始化timer->start(1000);//每次增加時(shí)間為一秒ui->pbStart->setText("stop");}else{timer->stop();ui->pbStart->setText("start");//initTime();} }

計(jì)算器界面,按鍵比較多,設(shè)置按鍵類名的時(shí)候盡量設(shè)計(jì)的與它的功能相近,不然寫功能的時(shí)候可能會(huì)寫亂,然后按鈕轉(zhuǎn)到槽,再編寫每個(gè)按鈕對應(yīng)的功能,由于該部分代碼比較多部分代,這里先展示一部分,完整代碼后面打包發(fā)出。

mainwindow3.h

//在私有成員變量里定義號(hào)需要用到的變量 QString process; float result; QString S; QString Sresult; float sum; int choose; int stat; int dot;

mainwindow3.cpp

ui->textEdit_show->setText("請輸入:");//開始時(shí)輸入框中顯示“請輸入:” //初始化定義好的變量process="";result = 0;S = "";stat = 0;choose = 0;sum = 0;dot = 0; void MainWindow3::on_pushButton_zero_clicked()//按鈕0生成的槽函數(shù),點(diǎn)擊0時(shí)在原來的內(nèi)容上加上數(shù)字0 {if (-1 == stat){result = sum;on_pushButton_clear_clicked();}if (0 == choose){S += "0";ui->textEdit_show->setText(S);}else if (0 != choose){process += "0";ui->textEdit_show->setText(process);} }

數(shù)字按鈕1~9的功能代碼相似,都是在原來的內(nèi)容上加上對應(yīng)的數(shù)字。

void MainWindow3::on_pushButton_sum_clicked()//實(shí)現(xiàn)加法 {if (0 == stat || -1 == stat){ui->textEdit_show->append("+");}sum = result;stat = 1;choose = 1;dot = 0; }void MainWindow3::on_pushButton_sub_clicked()//減法 {if (0 == stat || -1 == stat){ui->textEdit_show->append("-");}sum = result;stat = 1;choose = 2;dot = 0; }void MainWindow3::on_pushButton_mul_clicked()//乘法 {if (0 == stat || -1 == stat){ui->textEdit_show->append("*");}sum = result;stat = 1;choose = 3;dot = 0; }void MainWindow3::on_pushButton_div_clicked()//除法 {if (0 == stat || -1 == stat){ui->textEdit_show->append("/");}sum = result;stat = 1;choose = 4;dot = 0; }void MainWindow3::on_pushButton_dot_clicked()//小數(shù)點(diǎn) {if (0 == dot){if (0 == choose){S += ".";ui->textEdit_show->setText(S);}else if (0 != choose){process += ".";ui->textEdit_show->setText(process);}}stat = 1;dot = 1; }void MainWindow3::on_pushButton_equal_clicked()//等于 {switch (choose) {case 1:result += S.toFloat() + process.toFloat();sum = result;Sresult = QString("%1").arg(result);ui->textEdit_show->setText(Sresult);break;case 2:result += S.toFloat() - process.toFloat();sum = result;Sresult = QString("%1").arg(result);ui->textEdit_show->setText(Sresult);break;case 3:if (0 == sum){result = 1;}else{result = sum;}if (S.toFloat()*process.toFloat() != 0){result*= S.toFloat()*process.toFloat();qDebug() << result << "" << sum;}else{result*= (S.toFloat() + process.toFloat());qDebug() << result << "" << sum;}sum = result;Sresult = QString("%1").arg(result);ui->textEdit_show->setText(Sresult);break;case 4:if (0 == process.toFloat()){ui->textEdit_show->setText("system error!");QTimer::singleShot(1000,this,SLOT(on_pushButton_clear_clicked()));break;}if (0 == sum){result = 1;}else{result = sum;}if (S.toFloat()/process.toFloat() != 0){result = S.toFloat()/process.toFloat();qDebug() << result << "" << sum;}else{result /= (S.toFloat() + process.toFloat());qDebug() << result << "" << sum;}sum = result;Sresult = QString("%1").arg(result);ui->textEdit_show->setText(Sresult);break;}sum = result;stat = -1;//如果剛按了等號(hào)又按數(shù)字,相當(dāng)于做一次AC,如果按了等號(hào)再按加號(hào),就繼續(xù)計(jì)算choose = 0;//告訴程序類重新接受運(yùn)算符S = "";process = "";//因?yàn)橐B續(xù)計(jì)算,所以不將過程值清零 }void MainWindow3::on_pushButton_backspace_clicked()//退格 {if (0 == choose){S.chop(1);//退一格ui->textEdit_show->setText(S);}else if (0 != choose){process.chop(1);ui->textEdit_show->setText(process);} }void MainWindow3::on_pushButton_clear_clicked()//清零 {result = 0;S = "";process = "";stat = 0;choose = 0;ui->textEdit_show->setText("請輸入:");dot = 0; }void MainWindow3::on_pushButton_exit_clicked()//退出 {close();//直接關(guān)閉當(dāng)前界面 }

第三步、對每個(gè)窗口和控件進(jìn)行美化

給每個(gè)界面設(shè)置一個(gè)背景圖片,首先和添加ui/h文件的方式相似,鼠標(biāo)右擊工程,添加新文件,后面步驟如下。

?接著下一步、完成,然后右擊剛才生成的文件 -> 添加現(xiàn)有文件 -> 自動(dòng)打開文件之后,在里面新建一個(gè)文件,選擇它打開并在里面放如我們想用的背景圖片點(diǎn)擊打開后選擇Yes to All。

?

?目錄上就有了剛剛選擇的圖片。

?有了圖片就可以到ui文件去進(jìn)行設(shè)置,右擊界面的空白處 -> 改變樣式表 -> 下拉添加資源選擇background-image -> Picture->選擇圖片 -> OK。

添加#MainWindow2表示設(shè)置為該界面主窗口的背景。

?

?然后還可以設(shè)置一下按鈕的背景或顏色,做法和設(shè)置界面背景一樣但設(shè)置顏色的話就下拉添加顏色。

?第四步、為軟件添加一個(gè)圖標(biāo),使他看起來更像一個(gè)應(yīng)用程序。

注意圖標(biāo)必須是以ioc為后綴的圖片,操作方式如下。

在工程目錄里添加我們想要的圖標(biāo)。

在.pro文件中進(jìn)行以下操作。

?到這里,程序就完成的差不多了。

四、將程序打包成軟件

1、把工程編譯模式從debug調(diào)到release模式下,然后編譯。

?2、找到工程存放位置下,有一個(gè)release的文件夾,子文件下有個(gè)release的文件,其中就會(huì)生成一個(gè)后綴為exe的可執(zhí)行文件。

3、進(jìn)行封包操作,將運(yùn)行程序和它需要的動(dòng)態(tài)鏈接庫封裝在一起。步驟:
(1)、在英文路徑下創(chuàng)建一個(gè)文件夾aaa(文件夾名稱也要是英文的),然后找到剛才編譯生成的exe文件,并將它拷貝到新創(chuàng)建的文件aaa下。(如果你雙擊執(zhí)行這個(gè)程序,你會(huì)發(fā)現(xiàn)系統(tǒng)提示沒有缺少的dll文件)
(2)、利用QT的windeployqt工具導(dǎo)入程序所需要的文件和資源。(這個(gè)程序可以直接在電腦右下角搜索qt,選擇有一個(gè)黑色面板的那個(gè))

?在這之前需要先復(fù)制一份剛剛新建的文件夾aaa的錄進(jìn)。

?

?然后先進(jìn)入文件所在的系統(tǒng)盤,我是放在桌面的就去c盤,c:加上回車鍵就可以了。

然后粘貼上剛才復(fù)制的文件路徑回車。

?

?在路徑后面加上“windeployqt 程序名.exe”,回車進(jìn)行封包操作

?3、打包完成后,就和我們平時(shí)看到的軟件一樣了,可以在文件夾下直接打開那個(gè)文件了。

?4、如果覺得文件太多,我們可以使用第三方工具將所有文件打包成一個(gè),我這里使用的是Enigma Virtual Box。

先找到文件并打開。

?下一步。

?選擇裝整個(gè)程序的文件夾并確認(rèn)。

?

?

?點(diǎn)擊Files Ootions后勾上Compress? Files可以將文件壓縮小一點(diǎn)。

?最后點(diǎn)擊Process開始打包成一個(gè)文件。

?

?最后直接關(guān)閉,我們就可以在原來程序的文件里看到一個(gè)大概20兆的應(yīng)用程序,就是剛才打包好的一個(gè)完整的應(yīng)用程序(我這里將它重命名了桌面助手),可以直接放在桌面上打開。

?

?

五、總結(jié)

?到這里這個(gè)應(yīng)用程序就算是徹底完成了,通過這個(gè)項(xiàng)目也讓我學(xué)習(xí)到了很多東西,只有自己動(dòng)手了才發(fā)現(xiàn)原來自己也沒那么差,之前是真沒想到自己能做出東西來,也很感謝容容老師的教導(dǎo)和鼓勵(lì)。最后希望這篇文章能對各位有所幫助,完整的工程文件和打包工具我會(huì)后面補(bǔ)上。

工程文件(包含源碼和桌面助手應(yīng)用程序文件):

https://download.csdn.net/download/qq_51064962/86806762

第三方打包工具Enigma Virtual Box:https://download.csdn.net/download/qq_51064962/86806787

總結(jié)

以上是生活随笔為你收集整理的Qt实现一个简单的应用程序——桌面助手的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本a视频在线观看 | 黄色三及 | 亚洲热av | 亚洲码欧美码一区二区三区 | 欧美aⅴ在线观看 | 可以看的毛片 | 加勒比成人在线 | 成人精品亚洲人成在线 | 欧美一区不卡 | 日本一区三区 | 精品久久无码视频 | 成人久久久精品乱码一区二区三区 | 骚视频在线观看 | 神秘马戏团在线观看免费高清中文 | 久久99视频| 国产免费麻豆 | 夜操操 | 一区二区三区在线视频播放 | 98国产精品 | 日韩欧美视频免费在线观看 | 亚洲人视频 | 在线观看亚洲欧美 | 久久久成人免费 | 久久精品国产熟女亚洲AV麻豆 | 欧美一区二区三区久久妖精 | 久久99免费视频 | 91av短视频 | 免费网站91 | 69xav| 亚洲网站免费 | 免费av毛片| 婷婷色六月 | 日韩精品成人免费观看视频 | 青青青青草 | 亚洲视频成人 | 超碰在线日韩 | 成人久久久久 | 激情婷婷综合 | 西西久久| 国产孕妇一区二区三区 | 三级久久 | 成人音影 | 欧美少妇18p | 99视频免费看| 日本成人福利视频 | 国产一区二区三区18 | 国产欧美一区二区三区在线 | 亚洲妇女无套内射精 | 就要操av | 午夜寻花| 欧美做爰爽爽爽爽爽爽 | 国产成人宗合 | 少妇一级视频 | 色翁荡息又大又硬又粗又爽 | xxxx少妇| 精品xxxxx| 激情偷乱人成视频在线观看 | 精品视频在线观看 | 五月婷婷激情综合 | 91看片就是不一样 | 欧美成年人在线观看 | 91精品国产一区二区无码 | 日韩av手机在线播放 | 久久人妻精品白浆国产 | 国产欧美日韩一区二区三区 | 国产一区二区在线播放视频 | 奇米影视第四色7777 | 麻豆成人网 | 日本黄色xxxxx | 成年人午夜免费视频 | 日韩欧美国产高清91 | 国产男人搡女人免费视频 | 亚洲一区二区三区网站 | 欧美激情另类 | 成人高清视频在线观看 | 亚洲精品白虎 | 日韩一区二区高清视频 | 五月天视频| 东京热一区二区三区四区 | 国产麻豆91 | 亚洲色在线视频 | 综合久久精品 | av毛片精品 | www.污网站| 黄网站免费大全入口 | 国产高清在线观看视频 | 色婷婷激情综合 | 一本一道无码中文字幕精品热 | 偷拍女澡堂一区二区三区 | 亚洲一区二区三区av无码 | 日本三级午夜理伦三级三 | 久久久亚洲国产精品 | 91精品国产综合久久久蜜臀粉嫩 | 欧州一级片 | 乱精品一区字幕二区 | 日本五十熟hd丰满 | 精品网站 | 一二三区不卡 | 黄色污污网站在线观看 |