C:/ QT /.../ mymodel.h:-1: 在成员函数'void MainWindow :: createModel()':
中错误:'myModel :: myModel(QObject *)'是私有的
错误:在此上下文中
mymodel.h:
#ifndef MYMODEL_H
#define MYMODEL_H
#include <QStandardItemModel>
class myModel : public QStandardItemModel
{
public:
Q_OBJECT
myModel(QObject *parent = 0);
};
#endif // MYMODEL_H
mymodel.cpp:
#include "mymodel.h"
myModel::myModel(QObject *parent) :
QStandardItemModel(parent)
{
}
mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow();
private slots:
...
signals:
...
private:
...
myModel *model;
};
mainwindow.cpp:
void MainWindow::createModel()
{
model = new myModel(this);
感谢。
答案 0 :(得分:4)
我将在前言中说我只是浏览了其他Qt问题,然后偶然发现了下面的文档网站,以达到这个猜测。
来自http://doc.qt.digia.com/4.5/qobject.html#Q_OBJECT
Q_OBJECT宏必须出现在类定义的私有部分中,该部分定义声明自己的信号和插槽,或者使用Qt的元对象系统提供的其他服务。
我猜你应该在mymodel.h中的public:
之前移动它
这是我以前发现的SO帖子:
What does the Q_OBJECT macro do? Why do all Qt objects need this macro?