Я пытаюсь создать подкласс QTreeWidgetItem, чтобы я мог заполнить класс данными, которые мне нужны.Прошел весь код и не смог найти ни одного полного примера того, как это сделать правильно.В моей реализации что-то не так, потому что приложение не запускается, но если я сделаю это с QTreeWidgetItem, то оно будет работать без проблем.
Итак, я создал подкласс в виде файла H:
#ifndef XITEM_H
#define XITEM_H
#include <QTreeWidget>
class XItem : public QObject,public QTreeWidgetItem
{
Q_OBJECT
public:
XItem ();
void setText(int column, const QString &atext);
void addChild(QTreeWidgetItem *child);
};
#endif
И файл C:
#include "X.h"
XItem ::XItem (): QTreeWidgetItem(UserType)
{
}
void XItem::setText(int column, const QString &atext){
setText(column,atext);
}
void XItem::addChild(QTreeWidgetItem *child){
addChild(child);
}
И код, который запускает все это:
QTreeWidget * tree = ui->treeWidget;
QTreeWidgetItem * topLevel = new QTreeWidgetItem();
topLevel->setText(0, "This is top level");
for(int i=0; i<5; i++)
{
//QTreeWidgetItem * item = new QTreeWidgetItem();
XItem *item = new XItem();
item->setText(0,"item " + QString::number(i+1));
topLevel->addChild(item);
}
tree->addTopLevelItem(topLevel);
Если я запускаю его так, как это приложение зависает, и если я комментирую:
XItem *item = new XItem();
и без комментариев:
QTreeWidgetItem * item = new QTreeWidgetItem();
это работает.
Может кто-нибудь помочь с этим, пожалуйста.
С уважением!