Выделив необходимый компонент на форме, в меню ПКМ выбираем пункт Promote to.... Откроется меню задания имени класса-обёртки, и его заголовочного файла. Заголовочный файл может находиться и не в рабочем каталоге с файлом формы (*.ui), можно задать ему либо абсолютный путь (возможны проблемы при переносе проекта между платформами), либо относительный, от рабочего каталога. Дадим классу имя TestPromoter (Promoted class name:), его заголовочный файл -- ./TestPromoter.hpp (Header file:). Нажимаем кнопку Add, и QLabel оказывается "обёрнут" в созданный класс promoter-а.
Теперь нужно вручную создать заголовочный файл, и файл реализации нового класса:
#include <QLabel> #include <QMouseEvent> //------------------------------------------------------------------------- /* TestPromoter.hpp */ //------------------------------------------------------------------------- class TestPromoter : public QLabel { Q_OBJECT: protected: virtual void mouseReleaseEvent(QMouseEvent* ev); public: TestPromoter(QWidget* parent = 0,Qt::WindowFlags f = 0); TestPromoter(const QString& text,QWidget* parent = 0,Qt::WindowFlags f = 0); };
#include "./TestPromoter.hpp" //------------------------------------------------------------------------- /* TestPromoter.cpp */ //------------------------------------------------------------------------- TestPromoter::TestPromoter(QWidget* parent,Qt::WindowFlags f) : \ QLabel(parent,f) \ { return; } TestPromoter::TestPromoter(const QString& text,QWidget* parent,Qt::WindowFlags f) : \ QLabel(text,parent,f) \ { return; } void TestPromoter::mouseReleaseEvent(QMouseEvent* ev) { if(ev->button() == Qt::LeftButton) { //Код, который нужно выполнить по указанному событию } QLabel::mouseReleaseEvent(ev); return; }
Таким образом можно реализовать расширение функциональности визуальных объектов Qt Creator-а.
Комментариев нет:
Отправить комментарий