[Solved] questions about an example of “C++ GUI Programming with Qt 4 (2nd Edition)”
There is an example in chapter 2 of the book
finddialog.h
- #ifndef FINDDIALOG_H
- #define FINDDIALOG_H
- #include <QDialog>
- class QCheckBox;
- class QLabel;
- class QLineEdit;
- class QPushButton;
- {
- Q_OBJECT
- public:
- signals:
- private slots:
- void findClicked();
- private:
- };
- #endif
part of finddialog.cpp
- #include <QtGui>
- #include "finddialog.h"
- {
- lineEdit = new QLineEdit;
- label->setBuddy(lineEdit);
- findButton->setDefault(true);
- findButton->setEnabled(false);
- connect(findButton, SIGNAL(clicked()),
- this, SLOT(findClicked()));
- connect(closeButton, SIGNAL(clicked()),
- this, SLOT(close()));
- topLeftLayout->addWidget(label);
- topLeftLayout->addWidget(lineEdit);
- leftLayout->addLayout(topLeftLayout);
- leftLayout->addWidget(caseCheckBox);
- leftLayout->addWidget(backwardCheckBox);
- rightLayout->addWidget(findButton);
- rightLayout->addWidget(closeButton);
- rightLayout->addStretch();
- mainLayout->addLayout(leftLayout);
- mainLayout->addLayout(rightLayout);
- setLayout(mainLayout);//question:Why isn't it in the way of "object. setLayout(mainLayout); "? And which is object?
- setWindowTitle(tr("Find"));//same question
- setFixedHeight(sizeHint().height());//same question
- }
2 replies
- setLayout(mainLayout);//question:Why isn't it in the way of "object. setLayout(mainLayout); "? And which is object?
- setWindowTitle(tr("Find"));//same question
- setFixedHeight(sizeHint().height());//same question
You’re applying layout/title/height to object itself in constructor. This is the same as:
- this->setLayout(mainLayout);
- this->setWindowTitle(tr("Find"));
- this->setFixedHeight(sizeHint().height());
You should read some C++ book of C++ FAQ about “this”.
Technically it is used in init list
There is not alway necessary to use parent pointer, as you can see in .h file it is 0 by default. Book that you’re reading explains QObject parentship pretty well.
You must log in to post a reply. Not a member yet? Register here!

