вобщем есть у меня класс, в нем слот:
public slots:
void createNewProject(CPDialog::ProjectType type, const QString &dir, const QString &name);
void MainWindow::createNewProject(CPDialog::ProjectType type, const QString &dir, const QString &name) {
switch(type) {
case CPDialog::Console_Application:
createConsoleApp(dir, name);
break;
case CPDialog::Linux_Application:
createLinuxApp(dir, name);
break;
case CPDialog::Windows_Application:
createWindowsApp(dir, name);
break;
case CPDialog::MacOS_Application:
createMacOSApp(dir, name);
break;
}
}
void MainWindow::newProject() {
CPDialog *dialog = new CPDialog;
connect(dialog, SIGNAL(needCreateProject(CPDialog::ProjectType, const QString&, const QString&)),
this, SLOT(createNewProject(CPDialog::ProjectType, const QString&, const QString&)));
dialog->exec();
//...
}
Приведи этот класс полностью...
По приведенному коду сложно сказать. Вроде все правильно. А у тебя есть наследование от класса QObject, и есть макрос Q_OBJECT?
наследуюсь от QMainWindow, Q_OBJECT естественно есть
вот определения(весь класс довольно громоздкий):
#ifndef MAINWINDOW_H_
#define MAINWINDOW_H_
#include <QMainWindow>
class TabWidget;
class QTabWidget;
class ProjectView;
class CPDialog;
//...
class MainWindow : public QMainWindow {
Q_OBJECT
//...
};
#endif
CPDialog только задекларирован, но не определён. А ты в декларации createNewProject используешь его внутренний тип CPDialog::ProjectType.
Tonal, т.е. ему надо поменять:
class CPDialog;
на:
#include "CPDialog"
так?
действительно, Tonal, спасибо большое тебе, помогло
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)