C++ 模型视图控制器:我把函数QObject::connect(Object1、Signal1、Object2、Slot2)放在哪里?在视图中还是控制器中?

C++ 模型视图控制器:我把函数QObject::connect(Object1、Signal1、Object2、Slot2)放在哪里?在视图中还是控制器中?,c++,qt,c++11,C++,Qt,C++11,我对模型视图控制器有疑问。我把函数connect放在类控制器中,但我不知道它是对的还是错的。也许视野更好。我该怎么办?用户应该向控制器而不是视图发出请求 class Model{ public: string name; } class View:public QMainWindow{ public: Model* m; View(QWidget* parent, Model* m):QMainWindow(parent), m(m){ QLabel *label = new QLab

我对模型视图控制器有疑问。我把函数connect放在类控制器中,但我不知道它是对的还是错的。也许视野更好。我该怎么办?用户应该向控制器而不是视图发出请求

class Model{
public:
string name;
}

class View:public QMainWindow{
public:
Model* m;
View(QWidget* parent, Model* m):QMainWindow(parent), m(m){
    QLabel *label = new QLabel(this);
    QPushButton* button=new QPushButton("Button", this);
    button->setGeometry(QRect(QPoint(100, 100),QSize(200, 50)));
}

class Controller{
private:
    Model* m; View* v;
public:
    Controller(Model* m, View* v):m(m),v(v){
        QObject::connect(v.button, SIGNAL (clicked()), v.label, SLOT(Click());
    }
    void Click(){
        v.label->setText(m.name);
    }
}

int main(int argc, char *argv[]){
Model m;
Qwidget* parent=new QWidget();
View v(parent, &m);
Controller(&m,&v);
v.show();
}

用户是否能够更改视图中显示的数据?如果没有,就不需要控制器。如果你把它放在视图中,那么视图需要了解模型,然后你就打破了MVC的设计模式。我看你的设计没有任何问题。在Qt中已经实现了一些设计模式。当您使用该框架时,我强烈建议您了解如何使用这些类。创建一个从QMainWindow继承的视图并将其作为QWidget的子视图对我来说没有多大意义。您可以学习模型/视图编程。