void MainWindow::MainWindow()
{
stackedWidget = new QStackedWidget();
viewWidget = new ViewWidget(); // унаследован от QWidget
textWidget = new TextWidget(); // унаследован от QWidget
// ----------------------------
stackedWidget->addWidget(viewWidget );
stackedWidget->addWidget(textWidget );
}
TextWidget
содержит
QTabWidget
. При каждом щелчке на квадратик, !!должна!! создается новая вкладка, ( также являющаяся отдельным классом
TextArea: QWidget
которая и содержит
QTextEdit
c информацие (id)
QGraphicsItem-а
)
TextWidget::TextWidget(MainWindow *parent) : p_parent(parent)
{
tabWidget = new QTabWidget();
tabWidget->setTabsClosable(true);
QHBoxLayout *mainLay = new QHBoxLayout(this);
mainLay->addWidget(tabWidget);
setLayout(mainLay);
}
ViewWidget::ViewWidget(MainWindow *parent) : p_parent(parent)
{
scene = new GraphicsScene();
graphicsView = new GraphicsView(scene);
}
Создание графического элемента:
void GraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton && m_addNode)
{
if(!itemAt(event->scenePos(),QTransform())){
Node *newNode = new Node();
addItem(newNode);
}
}
QGraphicsItem
у меня представлен классом Node. И вот уже в методе mousePressEvent класса Node должен делаться emit SOME_SIGNAL. Вопрос в том, что Node:QGraphicsItem ничего не знает о существовании TextWidget с его вкладками TextArea. Соединяются же объекты и их сигналы и слоты! Но TextWidget и TextArea создаются "на верхнем уровне " , а Node:QGraphicsItem уже дальше. Здесь я немного запутался и не до конца понимаю как реализовать этот механизм((