Короче наверное проще раскидать виджеты вручную в коде, но я думал, что можно "как-нить так" ). А если я переделаю QGraphicsView во что-то свое и потом добавлю его в виджеты designer'а нельзя будет для него переписать события? "Promote" не нашел ни в свойствах designer'а, ни в assistant. Где его искать?
P.S. Все, нашел Promote to... Похоже это то, что надо, спасибо
P.P.S.
Вроде как сделал, но опять то же самое. В Promote to... указал Base class name: QGraphicsView, Promoted class name: MainView, Header file: mainview.h, Global include: on, нажал Add. Опять правой по виджету, Promote to -> MainView.
Создал файлы mainview.h и mainview.cpp следующего содержания:
mainview.h:
#ifndef MAINVIEW_H
#define MAINVIEW_H
#include <QGraphicsView>
class MainView : public QGraphicsView
{
Q_OBJECT
public:
MainView(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent* pe);
void mouseReleaseEvent(QMouseEvent* pe);
};
#endif
mainview.cpp:
#include <mainview.h>
MainView::MainView(QWidget *parent)
{
QGraphicsView *graphicsView;
}
void MainView::mousePressEvent(QMouseEvent* pe)
{
this->setCursor(Qt::PointingHandCursor);
}
void MainView::mouseReleaseEvent(QMouseEvent* pe)
{
this->unsetCursor();
}
Опять все работает для формы, но не для graphicsView. В ui_airport.h graphicsView создается вот так:
graphicsView = new MainView(centralwidget);
Централ виджет:
centralwidget = new QWidget(MainWindow);
МэйнВиндоу это класс формы airport.ui.
Чую что-то я сделал совсем не так как надо, прошу помочь, потому что всем этим занимаюсь впервые, а разобраться надо.