2011-04-14 4 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)' теперь значение '* parent' в' GoToCellDialog :: GoToCellDialog (QWidget * parent) 'или наоборот? Спасибо ' – Simplicity

+0

@user - Я тебя не понял. При создании 'GoToCellDialog' того, что когда-либо вы передавали, поскольку аргумент будет передан в конструктор' QWidget', сначала. – Mahesh

1

Чтобы ответить на ваши вопросы:

Означает ли это, мы наследуя QDialog (родителя)?

Да, это базовое наследование C++.

setupUi(this);

Вкратце: 'компилятор Пользовательский интерфейс' (uic) компилирует/транслирует файл XML в коде C++, которые будут скомпилированы и связаны между собой. Функция setupUi() гарантирует, что создаваемые вами виджеты дизайнера Qt (сгенерированный код C++) будут использоваться вашим кодом на Building the Widget tree.

+0

Спасибо за ваш ответ. Но что здесь означает «это»? – Simplicity

+0

Это ссылка на текущий объект/класс. См. [Wikipedia] (http://en.wikipedia.org/wiki/This_ (computer_science)) –

Смежные вопросы