1. 程式人生 > >Qt筆記——入門

Qt筆記——入門

釋放 ati 默認 信號 關系 out pan 內存回收 坐標系統

  • Qt的介紹
    • 跨平臺c++圖形用戶界面應用程序框架
  • Qt的框架
    • 父類(基類)子類(派生類)
    • 頭文件 QApplication應用程序類
    • Qt頭文件沒有.h
    • 頭文件和類名一樣
    • 有且只有一個應用程序類的對象
    • 窗口默認是隱藏,需要人為顯示
  • 項目文件
    • Q_OBJECT 信號與槽需要這個
    • pro文件中,TARGET可以更改項目生成的名字
  • 第一個Qt程序
    • 如果不指定父對象,對象和對象沒有關系,獨立
    • a指定b為它的父對象,a放在b的上面
    • 指定父對象,只需要父對象顯示,上面的子對象自動顯示
  • 父窗口和子窗口的區別(控件,部件,構件)
  • 信號和槽
    • 信號發出者(指針類型),處理的信號,信號接收者,信號處理函數
    • 自定義槽(普通函數的用法),可以是任意的成員函數,普通全局函數,靜態函數
    • 槽函數需要和信號一致(參數,返回值)
    • 信號必須有signals關鍵字來聲明
    • 信號沒有返回值,但可以有參數
    • 信號就是函數的聲明,只需聲明,無需定義
    • 信號可以重載,Qt4可以用宏signal和slot關鍵字連接信號,編譯的時候不對signal錯誤檢查,槽函數需要slots:聲明,Qt5如果有重載需要指針定義
    • QSting轉換成可識別的字符 str.toUtf8().data()
    • 用Lamda形式可以不用寫槽函數
  • 坐標系統
    • 對於父窗口,坐標系統相對於屏幕
      • 原點,屏幕左上角;x,往右;y,往下
    • 子窗口,相對於父窗口
  • 內存回收機制
    • 1,指定父對象,2直接或間接繼承
    • 繼承QOBJECT,對象樹可以自動釋放內存
    • 子對象如果是動態分配空間的new,不需要手動釋放delete
  • 帶菜單欄的窗口
    • 模態窗口
      • QDialog dlg;dlg.exrc();循環,不關閉窗口無法操作其他窗口
    • 非模態窗口
      • 1,QDialog dlg;dlg.show(); 會一閃而過,直接運行過這條語句
      • 2,QDialog *dlg1 =new QDialog(this); 放子函數裏,會不斷增加內存
      • 3,QDialog *dlg1 =new QDialog;dlg1->setAttribute(Qt::WA_DeleteOnClose);dlg1->show();不指定父對象,設置窗口關閉時,釋放內存。顯示。
  • 對話框
    • QMessageBox,QFileDialog

Qt筆記——入門