QT 學習1
阿新 • • 發佈:2020-07-20
第一步是安裝環境,因為之前已經安裝過qt了,所以這裡直接跳過這一步。
我找了很多書籍,qt學習基本都是以qtcreator開始教的,建個專案,在ui上直接操作,我覺得熟了可以這樣搞,一開始學習還是要腳踏實地,自己寫。
第一個qt程式
// qt.cpp
#include <QtDebug> int main( ) { qDebug() << "Hello Qt World!"; return 0; }
儲存後,輸入 qmake -project 得到qt-cli.pro 檔案(以資料夾命名的)
檔案內容長這樣
再輸入 qmake 會生成Makefile
接著輸入make 會生成可執行檔案
執行./qt-cli 即可執行
這不像是圖形介面,連個視窗都沒有,加個視窗
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); // 必須要,少了編譯報錯 QMainWindow w; w.show(); return a.exec(); // 必須要,少了編譯報錯 }
編譯前一定要在.pro 檔案中加上 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets ,不是會報一堆錯
可以認為這4行就是一切套路的開始,基本每個qt程式都有它。
結果
設定視窗標題,大小等
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); // 必須要,少了編譯報錯 // QApplication b(argc, argv); // 不要加,程式會出莫名其妙的問題 QMainWindow w; w.show(); w.setWindowTitle("QT"); // 設定標題 w.resize(1000,500); // 設定大小 QMainWindow x; // 再產生一個視窗 x.show(); x.setWindowTitle("GTK"); x.setFixedSize(300, 500); // 設定固定大小,沒有最大化的按鈕了 // b.exec(); // 不要加,程式會出莫名其妙的問題 return a.exec(); // 必須要,少了編譯報錯 }
去掉最大化,最小化,關閉等按鈕
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); // 必須要,少了編譯報錯 // QApplication b(argc, argv); // 不要加,程式會出莫名其妙的問題 QMainWindow w; w.setWindowTitle("QT"); w.resize(1000,500); // 設定大小 //w.setWindowFlags(Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint); w.setWindowFlags(Qt::WindowCloseButtonHint); // 只有關閉 w.setWindowFlags(Qt::WindowMaximizeButtonHint); // 只有最大化 w.setWindowFlags(Qt::WindowMinimizeButtonHint); // 只有最小化 // 最終結果只有最小化,因為最後設定最小化把上面的覆蓋了 w.show(); QMainWindow x; // 再產生一個視窗 x.show(); x.setWindowTitle("GTK"); x.setFixedSize(300, 500); // 設定固定大小,沒有最大化的按鈕了 // b.exec(); // 不要加,程式會出莫名其妙的問題 return a.exec(); // 必須要,少了編譯報錯 }
關閉所有按鈕(不知道有沒有更好的辦法)
#include <QApplication> #include <QMainWindow> int main(int argc, char* argv[]) { QApplication a(argc, argv); QMainWindow w; w.setWindowTitle("QT"); w.setFixedSize(1000,500); // 設定固定大小後沒有最大化按鈕 w.setWindowFlags(Qt::WindowMaximizeButtonHint); // 只開啟最大化按鈕 // 結果就是什麼按鈕沒有 w.show(); return a.exec(); }
結果