• Qt - как передать сигнал?

    @smirnovskoe Автор вопроса
    Keep calm и прогай
    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 уже дальше. Здесь я немного запутался и не до конца понимаю как реализовать этот механизм((
    Ответ написан
    Комментировать
  • Как подключить библиотеку OGDF, для визуализации графов, к QT?

    @smirnovskoe Автор вопроса
    Keep calm и прогай
    Вот структура файлов в каталоге проекта:
    --- MyProject
    --- --- mainwindow.h
    --- --- mainwindow.cpp
    --- --- mainwindow.ui
    --- --- main.cpp
    --- --- MyProject.pro
    --- --- MyProject.pro.user

    Это чисты проект, сгенеренный в QT Creator, который выводит пустое окно. Структура .pro файла выше.

    Вот структура папки с OGDF:
    --- ogdf
    --- --- cmake
    --- --- doc
    --- --- include
    --- --- --- coin
    --- --- --- --- набор папок с хедерами
    --- --- --- ogdf
    --- --- --- --- набор папок с хедерами
    --- --- src
    --- --- --- coin
    --- --- --- --- набор папок с сорсами
    --- --- --- ogdf
    --- --- --- --- набор папок с сорсами
    --- --- test
    --- --- .gitignore
    --- --- CMakeLists.txt
    --- --- LICENSE.txt
    --- --- README.md
    --- --- makeMakefile.sh


    Я положил папке ogdf c в папку с проектами:
    --- MyProject
    --- --- mainwindow.h
    --- --- mainwindow.cpp
    --- --- mainwindow.ui
    --- --- main.cpp
    --- --- MyProject.pro
    --- --- MyProject.pro.user
    --- --- ogdf
    --- --- --- (дальше структура как выше описал)


    Дописал LIBS += ogdf пишет нет такой папки или файла. Пробовал тупо в INCLUDEPATH забивать нужные файлы. Допусти, нужен файл (полный путь приведу):
    c:\qt_projects\MyProject\ogdf\include\ogdf\basic\Graph.h
    . Забивал в INCLUDEPATH = ogdf/include/ogdf/basic. Из main.cpp дергаю #include "Graph.h", он ругается что не может найти List.h, который лежит рядом с ним (в Graph.h есть строчка #include <ogdf/basic/List.h>). Как ее правильно и корректно подключить?

    В примерах на офф. сайте они пишут таким образом:
    #include <ogdf/basic/graph_generators.h>
    #include <ogdf/layered/DfsAcyclicSubgraph.h>
    #include <ogdf/fileformats/GraphIO.h>


    Пробовал по разному уже эти пути ставить. Все равно либо не видит, либо не существует пишет.
    Ответ написан
    Комментировать