前言:一點關於moc的小知識
qt是乙個跨平台的可提供使用者介面的應用程式開發框架,用於開發圖形使用者介面(gui)或非圖形使用者介面。qt使用標準的c++擴充套件包括訊號與插槽,是物件導向的框架,可生成特殊的元物件編譯器(meta object compiler,moc)易於擴充套件並且允許元件程式設計。
那麼問題來了,怎麼樣在設計好ui後生成可應用可編譯的moc呢?
step1
在解決方案資源管理器中,選中ui檔案,右鍵編譯,會生成ui_***.h。
step2
新建***.h標頭檔案,像這樣,注意檔名的一致性。
#ifndef featureselect_h
#define featureselect_h
#include #include #include #include #include #include "ui_featureselect.h"
class featureselect : public qdialog
;#endif // normalestimate_h
step3
選中step2中新建的***.h檔案,右鍵屬性->配置屬性->自定義生成工具->常規
根據自己實際情況修改命令列內容,如下:
"$(qtdir)\bin\moc.exe" "%(fullpath)" -o ".\generatedfiles\$(configurationname)\moc_%(filename).cpp" -dunicode -dwin32 -dwin64 -dqt_dll -dqt_no_debug -dndebug -dqt_core_lib -dqt_gui_lib -dqt_widgets_lib "-i.\generatedfiles" "-i." "-i$(qtdir)\include" "-i.\generatedfiles\$(configurationname)\." "-i$(qtdir)\include\qtcore" "-i$(qtdir)\include\qtgui" "-i$(qtdir)\include\qtwidgets" "-id:\python34\include" "-i$(projectdir)\." "-i$(pcl_root)\include\pcl-1.8" "-i$(pcl_root)\3rdparty\boost\include\boost-1_59" "-i$(pcl_root)\3rdparty\eigen\eigen3" "-i$(pcl_root)\3rdparty\flann\include" "-i$(pcl_root)\3rdparty\openni2\include" "-i$(pcl_root)\3rdparty\qhull\include" "-i$(pcl_root)\3rdparty\vtk\include\vtk-7.0"
根據自己實際情況修改說明內容,如下:
moc%27ing pclvisualizer.h...
修改輸出內容,如下:
.\generatedfiles\$(configurationname)\moc_%(filename).cpp
修改附加依賴項內容,如下:
$(qtdir)\bin\moc.exe;%(fullpath)
最終得到如圖:
最後選中***.h,右鍵編譯,即得到moc檔案~
Qt4中ui檔案生成vcproj
製作ui檔案 先應該用qt designer繪製乙個自己的介面,並存為myform.ui 這裡的myform可以用自己喜歡的名字代替 在製作自己的介面檔案時要注意以下幾個要點 1 要記住ui檔案的名字,因為uic生成的 會存在ui myform.h裡 2 要記住主窗體的object name,因為u...
Qt中ui檔案的使用
用designer設計的 ui檔案可以通過uic工具轉換為 h檔案 在編譯時也會自動生成這樣乙個ui h檔案 有了這個.h檔案就可以直接按照純c 的方式對其中的類進行呼叫。ui檔案的使用就是利用預設工具uic自動產生乙個類,然後用該類的setui函式載入介面到相應的物件上。ui檔案的使用有三種形式 ...
vs2010中自動生成Qt的moc檔案的方法
qt 程式在交由標準編譯器編譯之前,先要使用 moc 分析 c 原始檔。如果它發現在乙個標頭檔案中包含了巨集 q object,則會生成另外乙個 c 原始檔。這個原始檔中包含了 q object 巨集的實現 這個新的檔案名字將會是原檔名前面加上 moc 構成。這個新的檔案同樣將進入編譯系統,最終被鏈...