构造函数是私有的?

发布于 2024-11-15 00:40:25 字数 954 浏览 4 评论 0原文

C:/Qt/.../mymodel.h:-1: 在成员函数 'void MainWindow::createModel()':

error: 'myModel::myModel(QObject*)' is private

error: 在此上下文中

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

}

ma​​inwindow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow();

private slots:
    ...

signals:
    ...

private:
    ...
    myModel *model;
};

ma​​inwindow.cpp:

void MainWindow::createModel()
{
    model = new myModel(this);

谢谢。

C:/Qt/.../mymodel.h:-1:
In member function 'void MainWindow::createModel()':

error: 'myModel::myModel(QObject*)' is private

error: within this context

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

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太阳公公是暖光 2024-11-22 00:40:25

我将在开头说,我刚刚浏览了其他 Qt 问题,然后偶然发现了下面的文档站点,得出了这个猜测。

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

Q_OBJECT 宏必须出现在声明其自己的信号和槽或使用 Qt 元对象系统提供的其他服务的类定义的私有部分中。

我猜你应该把它移到 mymodel.h 中的 public: 之前

这是我用来找到这个的 SO 帖子:

Q_OBJECT 宏有什么作用?为什么所有 Qt 对象都需要这个宏?

I'm going to preface this with saying that I just browsed SO for other Qt questions and then stumbled around the documentation site below to arrive at this guess.

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

The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt's meta-object system.

I'm guessing that you should move it before your public: in mymodel.h

This was the SO post I used to find this:

What does the Q_OBJECT macro do? Why do all Qt objects need this macro?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文