1. 程式人生 > 實用技巧 >QT 學習1

QT 學習1

第一步是安裝環境,因為之前已經安裝過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();  
}

結果