QT 學習中遇到的一些坑

2023-03-01
開發WEB很多年了,一直都想做視窗應用,行動裝置應用等等...

之前有嘗試過Node,雖然開發起來對我來說挺容易上手的,但每次看到打包起來的應用都這麼肥胖,而且初始應用又慢,就覺得不太合適。

一直想做跨平台應用,這次選擇的框架是QT,基於C++的IDE叫做QT Creator,這個IDE是跨平台的,整合可以開發視窗應用,也可以直接打包成行動應用,感覺挺不錯的,就來嘗試一下吧!

下載:
QT Creator有企業版和專業版,而我們今天要使用的是社群版,是可以自由下載使用的一個版本,用它來開發是免費的,下載地址如下:
https://www.qt.io/download-open-source

安裝:
我今天是使用windows開發的,所以安裝時,會連同下載windows需要的資源,其他系統會有相對應的資源,總之,除非有特殊需求,不然的話就按照預設步驟一直安裝就好。

執行:
安裝完後,開啟QT Creator的歡迎畫面中會有一些資源可以使用,透過範例頁嵌可以立即建構一些範例應用,如果有符合自己需求的應用,可以直接拿來改,直接建構就可以用了。

我們今天要學習這個開發平台,所以可以直接透過教學頁嵌下的連結來進行學習,這篇文章不會說明教學內容,但會透過實作學習這些教學文件所遇到的坑進行紀錄,提供往後開發應用時做參考使用。

alt text

坑一: 
Creating a simple widget app這一則教學中,直接打:
 QMessageBox::information(this, QString("Hello " + ui->lineEdit->text()));

建構時會遇到錯誤如下:
no matching function for call to 'information'....

這個debug訊息說真的並不明確,按字面上來看,他是說沒有對應的information函式,但事實上是有這個函式,而且可以正常使用,只是可能我用的這是QT6的版本,所以在使用上,傳入的參數有改變,跟教學不一樣
教學: QMessageBox::information(this, QString("Hello " + ui->lineEdit->text()));

實際上應該是要: QMessageBox::information(this, "title", QString("Hello " + ui->lineEdit->text()));

第二個參數不是內容,而是那個提示視窗的標題,因為教學沒有傳入這個資料,導致找不到傳入的參數,所以建構時就出錯了,相關的函式說明可以到QT的手冊上去查,寫得很清楚
https://doc.qt.io/qt-6/qmessagebox.html#information

所以這個經驗告訴我們,跟著教學走,要記得同時查手冊,教學畢竟是舊資料,QT畢竟還在不斷更新中,所以實際操作還是需要同時參考手冊才行
 

Contact

Github

Codepen

歡迎參觀我的賣場
© 2013 Copyright Digishot Web | Design Tools
Visitors【636807】
digishot webdesign studio