Model view controller qt中的MVC和接口问题

Model view controller qt中的MVC和接口问题,model-view-controller,qt,interface,Model View Controller,Qt,Interface,我想创建视图并通过构造函数将其传递给控制器 所以,我创建了界面: #include <QString> class IMainView { public: virtual ~IMainView() {} virtual void setWindowTitle1(QString &title) = 0; }; Q_DECLARE_INTERFACE(IMainView, "IMainView/1.0"); IMainView的主窗口。 现在我必须将IMai

我想创建视图并通过构造函数将其传递给控制器

所以,我创建了界面:

#include <QString>

class IMainView
{
public:
    virtual ~IMainView() {}
    virtual void setWindowTitle1(QString &title) = 0;
};

Q_DECLARE_INTERFACE(IMainView, "IMainView/1.0");
IMainView的主窗口。 现在我必须将IMainView的实例传递给控制器,因为每个控制器注册视图:

#include "maincontroller.h"


MainController::MainController(IMainView *v)
{
    QString title = "my application";
    v->setWindowTitle1(title);
}

MainController::MainController()
{
}
我得到了一个错误: e:\pm\pm\main应用程序\IMainView.h:13:错误:C2259:“IMainView”:无法实例化抽象类 由于下列成员: 'void IMainView::setWindowTitle1QString&':是抽象的

在C语言中它可以工作,但在QT语言中却不行

谢谢

对不起,问错了。问题在于接口,它是抽象类iMainView.h:

#include <QString>

class IMainView
{
public:
    virtual ~IMainView() {}
    virtual void setWindowTitle1(QString &title) = 0;
};

Q_DECLARE_INTERFACE(IMainView, "IMainView/1.0");
我得到了一个错误:

e:\pm\pm\main应用程序\IMainView.h:13:错误:C2259:“IMainView”:无法实例化抽象类 由于下列成员: 'void IMainView::setWindowTitle1QString&':是抽象的


谢谢

您需要在MainWindow类中实现setWindowTitle1,您可能没有实现。这是简单的C++,而不是Qt的特殊性。

< P>请务必< /P>
> #include <QObject>

在接口声明之上的某个地方。QObject.h包含Q_DECLARE_接口及其依赖项的定义。

哪一行是它抱怨的第13行。在某个地方,您正在声明或试图实例化一个普通的IMainView实例,这是不允许的。如果不是在代码中,您可以尝试双重检查QQueDraceIGoeldMe宏生成的预处理代码。OK,我知道不是Qt而是C++。函数setWindowTitle1在mainwindow.cpp中实现。调用maincontroller头类中的include IMainView.h时出错。为什么要接受此答案?问题似乎还没有解决。。。我也有同样的问题,一切都按计划实施:/
#ifndef MAINCONTROLLER_H
#define MAINCONTROLLER_H

#include "IMainView.h"  //here is error


class MainController
{
public:
    //MainController(IMainView *v);
    MainController();


};

#endif // MAINCONTROLLER_H
> #include <QObject>