Подкласс Qt от QWidget

Я пишу свой собственный класс, который является подклассом QWidget, и это мой заголовочный файл.

#ifndef GRAPHMATRIX_H
#define GRAPHMATRIX_H

#include "treemodel.h"
#include <QWidget>
#include <Qt/qtableview.h>

class GraphMatrix : public QWidget
{
    Q_OBJECT
public:
    TreeModel& getModel();
    GraphMatrix(QWidget* parent = 0);
    void addTop(QString name);
    void cutComponent(GraphMatrix* component, QVector<int> columns);
private:
    TreeModel model;
    QTableView* view;
public slots:
    void changeValue(const QModelIndex& index);
};

#endif // GRAPHMATRIX_H

И я получаю эту ошибку

error C2248: 'QWidget::QWidget' : cannot access private member declared in class 'QWidget'

Может кто-нибудь помочь мне?

Добавлено: Я нашел ответ, проблема в QList. Я должен написать QList. потому что QList использует конструктор копирования. Спасибо, что уделили время моей проблеме


person haykart    schedule 26.12.2011    source источник
comment
Можете ли вы показать нам свой код конструктора, пожалуйста?   -  person cmannett85    schedule 26.12.2011


Ответы (2)


Похоже, вы пытаетесь вызвать конструктор QWidget по умолчанию, который является закрытым. Вместо этого ваш конструктор должен вызвать общедоступный конструктор QWidget следующим образом:

GraphMatrix::GraphMatrix(QWidget* parent) : QWidget(parent) {}
person Roland Rabien    schedule 26.12.2011
comment
Но QWidget имеет конструктор, который не принимает аргументов (точнее, он принимает аргументы, но предоставляет значения по умолчанию). - person Chris; 27.12.2011
comment
Я предполагаю, что он пытается получить доступ к чему-то еще, что является личным. Нам придется подождать, пока он не опубликует больше кода. - person Roland Rabien; 27.12.2011

Я нахожу ответ, проблема в QList, я должен написать QList. потому что QList использует конструктор копирования. Спасибо, что уделили время моей проблеме

person haykart    schedule 27.12.2011
comment
Я отредактировал это в исходном вопросе, чтобы люди не тратили на это свое время. Надеюсь, ты не против. - person TonyK; 27.12.2011
comment
Похоже, вы делали QList<GraphMatrix>, когда должны были делать QList<GraphMatrix*> Обычно не рекомендуется хранить списки QObject, которые не являются указателями. - person Chris; 27.12.2011