如何在 QGraphicsView 上绘制交互式小部件,例如 QButtons 和 Line Edits?例如,我在图像编辑应用程序中选择了一个图像区域,该应用程序使用 QGraphicsView 显示图像,我想用名称注释这个区域。
所以我想在这个矩形选择下面有一个 Line 编辑和两个按钮(Cross 和 Tick)。我怎么画这些?
示例代码会很酷!
如何在 QGraphicsView 上绘制交互式小部件,例如 QButtons 和 Line Edits?例如,我在图像编辑应用程序中选择了一个图像区域,该应用程序使用 QGraphicsView 显示图像,我想用名称注释这个区域。
所以我想在这个矩形选择下面有一个 Line 编辑和两个按钮(Cross 和 Tick)。我怎么画这些?
示例代码会很酷!
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));
}
};