Конструктор является частным? - PullRequest
4 голосов
/ 13 июня 2011

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);

Спасибо.

1 Ответ

4 голосов
/ 13 июня 2011

Я собираюсь предварить это словами, что я просто просмотрел SO на предмет других вопросов Qt и затем наткнулся на сайт документации ниже, чтобы прийти к этому предположению.

С http://doc.qt.digia.com/4.5/qobject.html#Q_OBJECT

Макрос Q_OBJECT должен появляться в закрытом разделе определения класса, который объявляет свои собственные сигналы и слоты или использует другие сервисы, предоставляемые мета-объектной системой Qt.

Я предполагаю, что вы должны переместить его до вашего public: в mymodel.h

Это был ТАК пост, который я использовал, чтобы найти это:

Что делает макрос Q_OBJECT? Зачем всем объектам Qt этот макрос?

...