【发布时间】:2018-08-23 19:33:56
【问题描述】:
我想在我的 QGraphicswidget 中嵌入一个 QWidget,例如按钮或进度条,但我只看到了将 QWidget 添加到 QGraphicsScene 的示例,即
m_scene->addWidget(new QPushButton("Test Test"));
在我的自定义图形小部件中,我正在绘制函数中绘制文本和其他自定义形状。我认为您需要在此处添加 QWidget,但我可能错了。有谁知道怎么做?
这是我重载的绘制函数:
void TestWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem
*option, QWidget *widget /*= 0*/)
{
Q_UNUSED(widget);
Q_UNUSED(option);
QRectF frame(QPointF(0,0), geometry().size());
QGradientStops stops;
//Draw border
painter->drawRoundedRect(boundingRect(), 5.0, 5.0);
//Name of the test
painter->drawText(40, 20, m_name);
//Status of test
QFont font = painter->font() ;
font.setPointSize(14);
painter->setFont(font);
painter->drawText(600, 20, m_status);
//Arrow button
QPolygonF poly;
poly << QPointF(5, 10) << QPointF(25, 10) << QPointF(15, 20 )<<
QPointF(5,10);
painter->setBrush(Qt::black);
painter->drawPolygon(poly, Qt::OddEvenFill);
}
【问题讨论】:
-
使用
QGraphicsProxyWidget。 -
您引用的示例显示了如何将 QWidget 添加到 QGraphicsScene。他们没有展示如何在 QGraphicsWidget 中嵌入 QWidget。
-
你必须使用:
QGraphicsProxyWidget,QGraphicsProxyWidget *proxy = new QGraphicsProxyWidgetproxy->setWidget(pointer_of_your_widget);m_scene->addItem(proxy)。见doc.qt.io/qt-5/… -
@scopchanov 我已经在场景中添加了一个自定义 QGraphicsWidget,我想在该 QGraphicsWidget 中添加一个 QProgressBar。
-
@scopchanov 我需要绘制大量二维项目,因此常规 QWidgets 将无法工作。希望我需要在我的 QGraphicsWidget 中绘制一个 QWidget 的情况很少(一到两次)。由于我使用的是 QGraphicWidgets 我需要一个 QGraphicScene 来正确绘制它们?
标签: c++ qt qt5 qgraphicsscene qgraphicswidget