Задать вопрос

Qt не видит сигнал, как исправить?

Добрый день. Сделал в одном классе слот, в другом сигнал и связал их. Проект собирается, но в выводе приложения появляется следующая запись:
QObject::connect: No such signal

Код с соединением сигнала и слота

#include "UIManager.h" // в этот хедер включён ProjectTree.h
#include "SolutionManager.h"
#include "AlgorithmManager.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    m_Width(1200),
    m_Height(650)
{
    ui->setupUi(this);

    this->setCentralWidget(UIManager::GetInstance()->GetParentWidget());

    QObject::connect(UIManager::GetInstance()->GetProjectTree(),
                     SIGNAL(ProjectTree::AddedSolutionByUser(QString&)),
                     SolutionManager::GetInstance(),
                     SLOT(SolutionManager::AddNewSolutionByUser(QString&)));
}


class SolutionManager : public QObject{
    Q_OBJECT
// for implementation Singleton
protected:
    SolutionManager();
 
public:
    ~SolutionManager();
 
    ...
 
    static SolutionManager* GetInstance();
 
private slots:
    void                    AddNewSolutionByUser(QString& name);
};


class ProjectTree : public QWidget{
    Q_OBJECT
public:
    ProjectTree(QWidget* pwgt = 0);
 
    QTreeWidget*        GetParentWidget();
    QSplitter*          GetSplitter();
 
private slots:
    bool    SetProjectName();
 
    void    AddNewSolution();
    void    SetSolutionName();
    void    RemoveSolution();
 
    void    CreateContextMenu(QPoint pos);
    void    SetCurrentSolution(QTreeWidgetItem*, int);
    void    ItemCollapsedHandler(QTreeWidgetItem*);
 
signals:
    void    AddedSolutionByUser(QString& name);
 
};
  • Вопрос задан
  • 5015 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@danilevskiy
C++/Qt Developer
Вместо:
QObject::connect(UIManager::GetInstance()->GetProjectTree(),
                     SIGNAL(ProjectTree::AddedSolutionByUser(QString&)),
                     SolutionManager::GetInstance(),
                     SLOT(SolutionManager::AddNewSolutionByUser(QString&)));


Напишите:
<QObject::connect(UIManager::GetInstance()->GetProjectTree(),
                     SIGNAL(AddedSolutionByUser(QString&)),
                     SolutionManager::GetInstance(),
                     SLOT(AddNewSolutionByUser(QString&)));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы