Виджеты рисования (такие как кнопки) над QgraphicsView

StackOverflow https://stackoverflow.com/questions/2985374

  •  24-10-2019
  •  | 
  •  

Вопрос

Как нарисовать интерактивные виджеты, такие как Qbuttons и Line Edics, через QGraphicsView? Для бывшего я выбрал регион над изображением в приложении редактирования изображения, которое отображает изображение с QGraphicsView, и я хочу аннотировать этот регион с именем.

Поэтому я хочу иметь редактирование линии и две кнопки (крест и тик) ниже этого прямоугольного выбора. Как мне нарисовать?

Пример кода был бы крутым!

Это было полезно?

Решение

QGraphicsScene имеет функцию addWidget() Где вы можете добавить виджет в сцену. Если вы не хотите проходить функцию AddWidget сцены, вы можете создать QGraphicsProxyWidget использовать setWidget() и добавьте виджет прокси в свою сцену.

Другие советы

Вы можете просто добавить их так, как вы делаете с любым другим контролем. Я использовал дизайнер QT, чтобы генерировать следующее:

class MyForm: public QMainWindow
{
    private:
        QGraphicsView *graphicsView;
        QLineEdit *lineEdit;
        QPushButton *pushButton;
        QPushButton *pushButton_2;
    public:
        MyForm() 
        {
            graphicsView = new QGraphicsView(this);
            graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
            graphicsView->setGeometry(QRect(130, 90, 441, 191));
            lineEdit = new QLineEdit(graphicsView);
            lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
            lineEdit->setGeometry(QRect(160, 150, 113, 22));
            pushButton = new QPushButton(graphicsView);
            pushButton->setObjectName(QString::fromUtf8("pushButton"));
            pushButton->setGeometry(QRect(280, 140, 115, 32));
            pushButton_2 = new QPushButton(graphicsView);
            pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
            pushButton_2->setGeometry(QRect(400, 140, 115, 32));
        }
};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top