Qt 原始檔中的 Q OBJECT

2021-10-02 04:15:10 字數 1050 閱讀 2830

q_object 為qobject 物件提供了訊號與槽的基礎,如果我們需要使用訊號與槽,最簡單方便的方式就是繼承qobject,並在類開頭放置q_object 這個巨集,在預編譯前moc 會自動掃瞄所有標頭檔案,根據 signals 和 slot 關鍵字,提取訊號與槽的所有及對應的資訊索引,並為訊號生成相對應的函式。但有時候我們需要在原始檔cpp 中定義乙個繼承於qobject 的類,並使用訊號與槽,這時候問題就出現了。

moc 僅掃瞄標頭檔案,不理會原始檔中的 q_object ,導致編譯器報錯,所以這時候我們還需要在原始檔結尾包含"檔名.moc",如#include "***x.moc",再重新 qmake->構建 即可。

如編譯出錯,可能需要包含moc檔案所在位置的目錄,一般是生成在 release 目錄下

includepath += $$pwd/release

系統:windows10 / ubuntu12

ide : qt5.9.6 / qt4.8.1 / qt4.8.5

#

include

"mainwindow.h"

#include

"ui_mainwindow.h"

#include

class

test

:public

qobject

~test()

void

test()

signals:

void

send()

;};mainwindow

::mainwindow

(qwidget *parent)

:qmainwindow

(parent),ui

(new ui::mainwindow)

mainwindow::~

mainwindow()

void

mainwindow

::receive()

#include

"mainwindow.moc"

QT中的巨集 Q OBJECT

只有繼承了qobject類的類,才具有訊號槽的能力。所以,為了使用訊號槽,必須繼承qobject。凡是qobject類 不管是直接子類還是間接子類 都應該在第一行 寫上q object。不管是不是使用訊號槽,都應該新增這個巨集。這個巨集的展開將為我們的類提供訊號槽機制 國際化機制以及 qt 提供的不...

QT 資源檔案

1,將資源複製到專案資料夾。1.滑鼠點選工程檔案目錄右鍵選擇 新增新檔案.2.在模板中選擇 qt qt resource file 3.資源名稱,不要有中文,路徑預設保持工程目錄即可 4.選中 res.qrc 資源檔案滑鼠右鍵選擇 open in editor 開啟資源編輯區 5.在編輯區首先新增字...

qt 建立資源檔案

我們編寫的gui可能需要一些額外的資源 比如貼圖用的 可用資源檔案統一管理。以下以為例。用qt creator 開啟工程,為工程新建資源檔案 如果沒有自動切換到上述介面,雙擊clock.qrc即可。選擇新增 新增字首,字首名預設為 new prefix1 改為在字首一欄輸入字首名 image 可以另...