Виджеты рисования (такие как кнопки) над QgraphicsView
-
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));
}
};