2014-09-11 1 views
0

버튼을 클릭하여 QGraphicsScene에 위젯을 추가하고 싶지만 이 작동하지 않습니다. 아무도 내가 뭘 잘못하고있어? I 설정과 같이 QGraphicsScene :addWidget이 작동하지 않습니다.

ui->setupUi(this); 

mScene = new QGraphicsScene(this); 
mNodeView = new QNodeView(ui->tabWidget); 
ui->NodeGraphicsView->addWidget(mNodeView); 

mNodeView->setScene(mScene); 
mNodeView->show(); 

당신이 _nodeWidget에 부모를 설정하려고처럼이 보이는 QGraphicsScene

void MainWindow::on_actionTextNode_triggered() 
{ 
    QNodeWidget *_nodeWidget = new QNodeWidget(mNodeView); 
    mScene->addWidget(_nodeWidget); 

    mNodeView->show(); 
} 
+1

QGraphicsProxyWidget :: setWidget과 같은 오류가 발생 했습니까 : 위젯을 삽입 할 수 없습니까? – Chernobyl

+0

'_nodeWidget-> show()'를'mScene'에 추가 한 직후에 시도해 보셨습니까? – mhcuervo

+0

QNodeWidget이란 무엇입니까? – TheDarkKnight

답변

1

에 위젯을 추가, 부모없이 수행하려고 :

QNodeWidget *_nodeWidget = new QNodeWidget; 

작동합니까?

+0

마법처럼 작동합니다! – schwenk

+0

하지만 이제는 개체를 삭제하려고 시도하는 segfault가 발생합니다. – schwenk

+0

방금 ​​잃어버린 deleteLater(); – schwenk

0

위젯을 장면에 추가하면 위치 (0,0)에 QProxyWidget으로 추가됩니다.

위젯이 보이지 않는 경우보기에 표시되지 않을 수도 있습니다. 첫째, 개의 addWidget에 대한 호출이 유효한 포인터를 반환 확인하고 만약 그렇다면, fitInWindow를 호출 위젯에 뷰를 초점 : -

QNodeWidget *_nodeWidget = new QNodeWidget(mNodeView); 
QGraphicsProxyWidget* pProxy = mScene->addWidget(_nodeWidget); 

mNodeView->fitInWindow(pProxy); 

를 프록시 위젯에 유효한 포인터를하지 않은 경우, 그러면 QNodeWidget 클래스에 문제점이 있습니다.