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>