qt - 子类化 QTreeWidgetItem
问题描述
我正在尝试对 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();
有用。
任何人都可以帮助解决这个问题。
亲切的问候!
解决方案
无论如何......多年来仍然是一个简单的错误,因为这个错误可能会伴随长时间的编码。
错误:
void XItem::setText(int column, const QString &atext){
setText(column,atext);
}
void XItem::addChild(QTreeWidgetItem *child){
addChild(child);
}
应该:
void XItem::setText(int column, const QString &atext){
QTreeWidgetItem::setText(column,atext);
}
void XItem::addChild(QTreeWidgetItem *child){
QTreeWidgetItem::addChild(child);
}
推荐阅读
- go - 如何将 struct 转换为 base64 编码的字符串,反之亦然
- c - 获取空白字符串
- asp.net-mvc - ASP.NET MVC 下拉列表未选择
- r - 根据同一模块中的输入在 Shiny 模块中渲染条件 UI 组件
- python - on_message_edit 自身循环 discord.py rewrite v1.3.4
- pandas - Groupby 并将特定函数应用于某些列,并将另一个函数应用于 df Pandas 的其余部分
- javascript - 使用 forEach 替换部分字符串?
- c++ - 如何在不指定类型的情况下使原始 C++ 指针指向模板类?
- javascript - 在 Angular 2 中构建 Javascript 脚手架应用程序时遇到错误
- r - pivot_wider 是否允许 values_fill 最后一个已知值?