2011-04-14 83 views
0

我只是對這些代碼sinppets這些問題從C++ GUI Programming with Qt 4書:是不是意味着Qt的 - 什麼是我們這些代碼的含義是網頁摘要

GoToCellDialog::GoToCellDialog(QWidget *parent):QDialog(parent) 

確實我們繼承QDialog(parent)?或者,這到底意味着什麼?

setupUi(this); 

這裏,該代碼段是gotocelldialog.cpp文件,它是gotocelldialog.h頭文件的實現的一部分。在這種情況下,我們的意思是this?我們想要設置什麼?而且,這將是什麼樣的設置?

謝謝。

回答

2
GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent) 

:表示初始化列表。這意味着,parent正在作爲參數傳遞給QDialog構造函數。我認爲GoToCellDialog來自QDialog,因此發送parent到它的構造函數。因此,在執行GoToCellDialog的正文之前,執行QDialog構造函數。

這個例子應該給你一個想法 -

class foo 
{ 
    int number ; 
    public: 
     foo(int i) : number(i) // Means copying value of i to number 
     {} 
}; 

class bar : public foo 
{ 
    public: 
     bar(int temp) : foo(temp) 
     { // <- Before getting here, foo sub object must be constructed. 
      // Because the order of construction takes from parent to child. 
     } 
}; 

在上面的例子中,絕對是foo構造函數的參數必須通過實例的bar一段時間。所以,初始化列表是唯一的方法,因爲沒有默認的構造函數(即沒有參數的構造函數)可用於foo

+0

感謝您的回覆。那麼,'QDialog(parent)'現在是'GoToCellDialog :: GoToCellDialog(QWidget * parent)'中'* parent'的值,反之亦然?謝謝 ' – Simplicity 2011-04-14 11:09:09

+0

@user - 我不理解你。在實例化'GoToCellDialog'時,你所傳遞的參數將首先傳遞給'QWidget'構造函數。 – Mahesh 2011-04-17 18:53:28

1

回答您的問題:

這是否意味着我們繼承QDialog的(父)?

是的,這是基本的C++繼承。

setupUi(this);

簡而言之:將 '用戶界面的編譯器'(uic)編譯/翻譯xml文件到將被編譯和鏈接C++代碼。 setupUi()函數確保您設置的Qt設計器小部件(生成的C++代碼)由Building the Widget tree設置爲由您的代碼使用。

+0

感謝您的回覆。但是,這裏「這個」是指什麼? – Simplicity 2011-04-14 11:13:45

+0

它是對當前對象/類的引用。參見[wikipedia](http://en.wikipedia.org/wiki/This_(computer_science)) – 2011-04-14 11:23:10