Название: Поставить кнопку на GraphicsView
Отправлено: Oleg_IT от Август 01, 2012, 12:01
Есть окно, на котором отображается рисованная картинка, код инициализации ScreenC *c_ScreenC = new ScreenC(); QGraphicsScene scene; scene.addItem(c_ScreenC); scene.setBackgroundBrush(QBrush(c_ScreenC->GetColorScreen())); GraphicsView view; view.setRenderHints(QPainter::Antialiasing); view.setTransformationAnchor(QGraphicsView::NoAnchor); view.setScene(&scene); QRectF sceneRect = scene.sceneRect(); view.resize(sceneRect.width(), sceneRect.height()); view.setSceneRect(sceneRect);
Нужно на этой картинке поставить кнопки, слидары, … Класс кнопки class ButtonControl: public QAbstractButton //class /*Q_GUI_EXPORT*/ ButtonControl: public QPushButton { Q_OBJECT Q_PROPERTY(QString description READ description WRITE setDescription) Q_PROPERTY(bool flat READ isFlat WRITE setFlat DESIGNABLE false) public: explicit ButtonControl(QWidget *parent=0); explicit ButtonControl(const QString &text, QWidget *parent=0); ButtonControl(const QString &text, const QString &description, QWidget *parent=0); QString description() const; void setDescription(const QString &description); protected: QSize sizeHint() const; int heightForWidth(int) const; QSize minimumSizeHint() const; bool event(QEvent *e); void paintEvent(QPaintEvent *); //private: // Q_DISABLE_COPY(QCommandLinkButton) // Q_DECLARE_PRIVATE(QCommandLinkButton) }; Инициализация кнопки view.resize(sceneRect.width(), sceneRect.height()); view.setSceneRect(sceneRect); ButtonControl *Btn1 = new ButtonControl(QString("Button"),&view); Btn1->move(10,10); Btn1->setFixedSize(300,130); Btn1->setBaseSize(300,130); Btn1->setVisible(true); В результате отображается окно с графикой и отдельно полноценное, со всеми атрибутами, окно кнопки. Весь код брал из примеров. Что я не так делаю?
Название: Re: Поставить кнопку на GraphicsView
Отправлено: kambala от Август 01, 2012, 12:39
создавай сцену и вью динамически, иначе они уничтожаются по выходе из области видимости.
ты используешь Qt 3.x? если нет, то setBaseSize() вызывать и не нужно.
да, и сам ты слидар :D
Название: Re: Поставить кнопку на GraphicsView
Отправлено: Oleg_IT от Август 02, 2012, 09:44
да, и сам ты слидар Да ладно, главное ясно, о чём речь :D Посмотрел я ещё примеры и сделал как в animatedtiles. Но там не совсем полнофункциональная кнопка.
|