Выделив необходимый компонент на форме, в меню ПКМ выбираем пункт 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-а.
Комментариев нет:
Отправить комментарий