Qt 如何借助布局在QGraphicWidget中排列小部件和形状?

Qt 如何借助布局在QGraphicWidget中排列小部件和形状?,qt,layout,graphics,paint,qgraphicswidget,Qt,Layout,Graphics,Paint,Qgraphicswidget,我有一个定制的QGraphicsWidgets,它绘制了一些项目,还包含一些子代理小部件: //Constructor adds a child proxy button TestWidget::TestWidget(QJsonObject testDefinition, QJsonObject testStatus, QString parentSequenceID, QGraphicsWidget *parent): m_parentID(parentSequenceID),

我有一个定制的QGraphicsWidgets,它绘制了一些项目,还包含一些子代理小部件:

//Constructor adds a child proxy button
TestWidget::TestWidget(QJsonObject testDefinition, QJsonObject testStatus, QString parentSequenceID, QGraphicsWidget *parent):
    m_parentID(parentSequenceID),
    m_testStatus(testStatus),
    m_testDefinition(testDefinition)
{
    Q_UNUSED(parent);

    m_name = m_testDefinition[displayNameStr].toString();
    m_status = m_testStatus[resultStr].toObject()[resultStr].toString();
    m_id = m_testDefinition[idStr].toString();

    m_layout = new QGraphicsLinearLayout(Qt::Vertical, this);

    //Add the pause/resume button
    auto *proxyPauseAbortButton = new QGraphicsProxyWidget(this);

    proxyPauseAbortButton->setWidget(new QPushButton(tr("Pause")));
    proxyPauseAbortButton->moveBy(20, 40);

    //Add the progress bar
    auto * proxyTestProgressBar = new QGraphicsProxyWidget(this);
    QProgressBar * testProgressBar = new QProgressBar();
    testProgressBar->setOrientation(Qt::Horizontal);
    testProgressBar->setRange(0, 100); // Let's say it goes from 0 to 100
    testProgressBar->setValue(10); // With a current value of 10

    proxyTestProgressBar->setWidget(testProgressBar);
    proxyTestProgressBar->moveBy(20, 80);

    //Add the html view
    auto * proxyTestHtmlView = new QGraphicsProxyWidget(this);
    QWebEngineView * testHtmlView = new QWebEngineView();
    testHtmlView->load(QUrl(QStringLiteral("https://www.google.com/")));

    proxyTestHtmlView->setWidget(testHtmlView);
    proxyTestHtmlView->moveBy(20, 120);

}

//Paint function draws a border, shapes, and text
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);

}
//构造函数添加子代理按钮
TestWidget::TestWidget(QJsonObject testDefinition、QJsonObject testStatus、QString parentSequenceID、QGraphicsWidget*parent):
m_parentID(parentSequenceID),
m_testStatus(测试状态),
m_testDefinition(testDefinition)
{
Q_未使用(父母);
m_name=m_testDefinition[displayNameStr].toString();
m_status=m_testStatus[resultStr].toObject()[resultStr].toString();
m_id=m_testDefinition[idStr].toString();
m_布局=新的QGraphicsLinearLayout(Qt::垂直,this);
//添加暂停/恢复按钮
auto*proxyPauseAbortButton=新的QGraphicsProxyWidget(此);
ProxyPauseAportButton->setWidget(新的QPushButton(tr(“暂停”));
proxyPauseAbortButton->moveBy(20,40);
//添加进度条
auto*proxyTestProgressBar=新的QGraphicsProxyWidget(此);
QProgressBar*testProgressBar=新的QProgressBar();
testProgressBar->setOrientation(Qt::水平);
testProgressBar->setRange(01100);//假设它从0到100
testProgressBar->setValue(10);//当前值为10
proxyTestProgressBar->setWidget(testProgressBar);
proxyTestProgressBar->moveBy(20,80);
//添加html视图
auto*proxyTestHtmlView=新的QGraphicsProxyWidget(此);
QWebEngineView*testHtmlView=新的QWebEngineView();
testHtmlView->load(QUrl)(QStringLiteral(“https://www.google.com/")));
proxyTestHtmlView->setWidget(testHtmlView);
proxyTestHtmlView->moveBy(20120);
}
//绘制函数用于绘制边框、形状和文本
void TestWidget::paint(QPainter*painter,
常量QStyleOptionGraphicsItem*选项,QWidget*widget/*=0*/)
{
Q_未使用(小部件);
Q_未使用(选项);
QRectF帧(QPointF(0,0),geometry().size());
QGradientStops;
//划界
画师->drawRoundedRect(boundingRect(),5.0,5.0);
//测试名称
画家->绘图文本(40、20、m_名称);
//测试状态
QFont font=画师->字体();
字体设置点大小(14);
画师->设置字体(字体);
画师->绘图文本(600、20、m_状态);
//箭头按钮
QPolygonF-poly;

poly我可以请你画一张简单的图画,描述你如何想象带有项目/小部件/布局的场景。@scopchanov这是一个指向图像的链接。内部框是QWebEngine视图。请将此信息添加到你的问题中。这些组件是什么?图画/小部件意味着什么?你们很快。我用相关的内容更新了问题信息。如果您还有任何问题,请告诉我。