Классы



  • Здравствуйте
    Для чего нужно создавать классы в qt, если можно просто добавить их с помощью include, к примеру в книге Бланшет и Саммерфилд создаются классы QLabel,QLineEdit,QCheckBox и QPushButton :
    #ifndef FINDDIALOG_H
    #define FINDDIALOG_H
    #include <QDialog>

    class QCheckBox;
    class QLabel;
    class QLineEdit;
    class QPushButton;

    class FindDialog : public QDialog
    {
    Q_OBJECT
    public:
    FindDialog(QWidget *parent = 0);

    signals:
    void findNext(const QString &str, Qt::CaseSensitive cs);
    void findPrev(const QString &str, Qt::CaseSensitive cs);

    private slots:
    void findClicked();
    void enableFindButton(const QString &str);

    С Уважением,
    Жасур



  • @Jasur к примеру вы создали класс A, создались 2 файла a.h и a.cpp вы в нём заинклудили QDebug, далее вы создали класс B, который наследуется от класса A, соответ вам нужно его приинклудить, вы подключили и в вашей зоне видимости класса B будет QDebug автоматически, т.к. вы подключили его в родительском классе, при данном примере это никак не мешает, но при сложной архитектуре у вас могут быть зацикливания (закольцовывания) классов, от чего компилятор сойдёт с ума, из-за рекурсивной перегрузки методов класса, вот чтобы этого избежать в заголовочных файлах объявляют просто пустой класс, а сам заголовочный файл с классом подключают уже в cpp файлах. Надеюсь понятно объснял.



  • @TheGringerEye Т.е если в mainwindow у меня будет большое количество виджетов к примеру 10-15 штук, то в h файле мне лучше создать пустые классы, чем подключать их через <include>, а в маленьких программах можно и через <include>, я Вас правильно?

    С Уважением,
    Жасур



  • @Jasur в идеале всегда нужно избавляться от ненужных лишних "наследуемых" инклудов, так и h будет чист, и вы будете спокойны, что ненужных переопределений и закольцованностей не произойдёт.



  • @TheGringerEye Теперь ясно, огромное спасибо


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.