Qt - Что мы подразумеваем под этими фрагментами кода - PullRequest
0 голосов
/ 14 апреля 2011

У меня просто есть вопросы об этих фрагментах кода из книги C++ GUI Programming with Qt 4:

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

Значит ли это, что мы наследуем QDialog(parent)? Или что именно это значит?

setupUi(this);

Здесь этот фрагмент кода является частью файла gotocelldialog.cpp, который является реализацией заголовочного файла gotocelldialog.h. Что мы подразумеваем под this в этом контексте? Что мы пытаемся настроить? И что это за настройка?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011
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.

1 голос
/ 14 апреля 2011

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

Значит ли это, что мы наследуем QDialog (parent)?

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

setupUi(this);

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

...