Мерзімді түрде Qt Designer графикалық дизайнерінде виджеттерді мұраға алуға және мұраланған виджеттерді пайдалануға қатысты сұрақтар туындайды.
Жалпы код ішінде виджетті пайдалану түсінікті болса, пайдаланушы виджетін ui пішініне қалай тіркеу керектігі бірінші көзқараста түсініксіз.
QPushButton мұраланған батырмасының мысалын қарастырайық.
Пайдаланушы түймесі
QPushButton ішінен мұрагер болатын және mousePressEvent әдісін қайта анықтайтын CustomButton сыныбын ескере отырып. Бұл кодта ерекше ештеңе көрмейсіз, ол тек Qt ішіндегі кейбір виджеттен мұрагер болатын сыныпты қалай жазу керектігін көрсетеді.
CustomButton.h
#ifndef CUSTOMBUTTON_H #define CUSTOMBUTTON_H #include <QPushButton> class CustomButton : public QPushButton { Q_OBJECT public: explicit CustomButton(QWidget *parent = nullptr); // QWidget interface protected: virtual void mousePressEvent(QMouseEvent* event) override; }; #endif // CUSTOMBUTTON_H
CustomButton.cpp
#include "CustomButton.h" CustomButton::CustomButton(QWidget *parent) : QPushButton(parent) { } void CustomButton::mousePressEvent(QMouseEvent* event) { // ToDo something QWidget::mousePressEvent(event); }
Пайдаланушы виджетін ui пішініне қосыңыз
1) Виджет класының пішіні берілген, онда ештеңе жоқ
2) Оған стандартты QPushButton түймешігін қосыңыз
3) Тінтуірдің оң жақ түймешігімен контекстік мәзірге қоңырау шалыңыз және «Түрлендіру ...» түймесін басыңыз.
4) Ашылған диалогтық терезеде түрлендірілген класстың атын және тақырып файлының атын енгізіңіз. Біздің жағдайда бұл болады:
- сынып атауы CustomButton
- CustomButton.h тақырып файлы
Және диалогтық терезеде қосу түймесін басыңыз
5) Түрлендірілген классты таңдап, түрлендіру түймесін басыңыз
Благодарю, а я решил весь GUI в коде писать из-за того, что года два назад не нашел ответ на этот вопрос :) Плохо искал :C
Наверное, поэтому некоторые программисты недолюбливают Qt Designer. Приходится тратить дополнительно силы на его изучение, а иногда некотроые вещи запрятаны очень глубоко в нём.