我知道这个问题已被问过很多次,但我在这里找不到解决方案,也没有在谷歌找到解决方案.
这是我的头文件
- #ifndef MAINCONTROLLER_H
- #define MAINCONTROLLER_H
- #include <QSettings>
- #include <QDebug>
- #include <QDir>
- #include <QObject>
- #include "PhTools/PhString.h"
- #include "PhStrip/PhStripDoc.h"
- class MainController : public QObject
- {
- Q_OBJECT
- public:
- explicit MainController(QObject *parent = 0);
- void loadSettings();
- PhString getLastFile();
- void setLastFile(PhString fileName);
- bool openDoc(PhString fileName);
- signals:
- void docChanged();
- private:
- QSettings * _settings;
- PhStripDoc * _doc;
- };
- #endif // MAINCONTROLLER_H
我的CPP档案:
- #include "MainController.h"
- MainController::MainController(QObject *parent) :
- QObject(parent)
- {
- _doc = new PhStripDoc();
- loadSettings();
- }
- void MainController::loadSettings()
- {
- _settings = new QSettings(QDir::homePath() + "/Library/Preferences/com.me.me.plist",QSettings::NativeFormat);
- getLastFile();
- }
- PhString MainController::getLastFile()
- {
- qDebug() << "lastfile :" << _settings->value("last_file","").toString();
- return _settings->value("last_file").toString();
- }
- bool MainController::openDoc(PhString fileName)
- {
- bool succeed = _doc->openDX(fileName);
- if (succeed)
- emit docChanged();
- return succeed;
- }
- void MainController::setLastFile(PhString filename)
- {
- _settings->setValue("last_file",filename);
- }
这是错误日志:
- Undefined symbols for architecture x86_64:
- "MainController::docChanged()",referenced from:
- MainController::openDoc(QString) in MainController.o
- "vtable for MainController",referenced from:
- MainController::MainController(QObject*) in MainController.o
- MainController::MainController(QObject*) in MainController.o
- NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
- ld: symbol(s) not found for architecture x86_64
- clang: error: linker command Failed with exit code 1 (use -v to see invocation)
它可能来自信号,但我不确定……