Re: [問題] QT DESIGER產生CODE的地方

看板C_and_CPP作者 (QAQ)時間7年前 (2016/09/26 01:21), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《MOONY135 (談無慾)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VS 2015 C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : QT 5.7 : 問題(Question): : 小弟剛從C#過來 : C#在WINFORM拉畫面的時候 他會在DESINGER.CS檔產出CODE : 會有名字 位置 觸發事件等等 : ============================= : this.lbcpuName = new System.Windows.Forms.Label(); : this.lbcpuName.AutoSize = true; : this.lbcpuName.Location = new System.Drawing.Point(30, 35); : this.lbcpuName.Name = "lbcpuName"; : this.lbcpuName.Size = new System.Drawing.Size(72, 15); : this.lbcpuName.TabIndex = 2; : this.lbcpuName.Text = "CPU型號 :"; : ============================= : 最近開始用QT 但對於QT DESIGNER有一個疑問是 : 直接拉畫面的時候 他的widget的CODE會產生在哪邊呢? : 還有想知道DESIGER的SLOT寫完之後CODE會出現在哪邊? : 現在看起來純手工打造好像問題會比較少? Qt 的文件非常完整,看 code 逆向去學有點辜負寫文件的人的苦心...XD 以 QLabel 來說,在 http://doc.qt.io/qt-5/qlabel.html 就能知道它提供的介面有哪些。 不過我想你的問題應該是對於 Qt 怎麼對待原始碼還不甚了解才會導致你「怕怕的」, 我簡單舉個例子: 假設我們想做個 Widget,原始碼有 0. widget.pro 1. widget.h (class 宣告內要有 Q_OBJECT,如果想用 signal-slot 機制的話) 2. widget.cpp 3. widget.ui 使用 qmake 的話,會產生 a. Makefile b. ui_widget.h c. moc_widget.cpp b. 跟 c. 分別由 uic 跟 moc 產生, 而 widget.ui 裏面的設定、signal-slot 等等都會被轉換到 ui_widget.h, 而這個 ui_widget.h 裡面是個 class 比如 Ui::WidgetClass 之類的。 所以 Qt Creator 幫你建立的 widget.h 裡面就會長得像這樣: #include <QWidget> #include "ui_widget.h" class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::WidgetClass ui; }; 然後在 Constructor 的地方會呼叫 ui.setupUi(this) 來把元件建立出來, 之後我們就可以用 ui.label 之類的來存取元件。 在 Visual Studio 的情況,qmake 只是用來產生 solution/project, 驅動 moc 跟 uic 的是在專案裡 widget.h 跟 widget.ui 的 prebuild event 裏面, 當你有裝 Qt VS add-in 的情況下,加檔案進專案時就幫你填好了。 而 moc 與 uic 輸出的目錄通常在 $(ProjectDir)\GeneratedFiles\ 裏面, 輸出目錄都可以在 Qt project settings 裡設定。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.230.61 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1474824116.A.469.html

09/26 08:01, , 1F
非常感謝 因為之前C#有 所以才想說是不是也可以有同樣
09/26 08:01, 1F

09/26 08:01, , 2F
功能
09/26 08:01, 2F
文章代碼(AID): #1Nw0UqHf (C_and_CPP)
文章代碼(AID): #1Nw0UqHf (C_and_CPP)