我已经将QTreeWidget,QTreeWidgetItem和QListWidgetItem子类化了。我正在尝试将自定义QListWidgetItem添加到QListWidget,但它没有显示在视图中。
我创建了一个对话框。我插入了一个QTreeWidget和QListWidget。 我想要的是当我在QTreeWidget中单击一个Item时,QListWidget应该填充我的自定义QListWidgetItems,即单击的CustomTreeWidgetItem(QTreeWidgetItem派生类)中包含的CustomListWidgetItems。 如果我使用QListWidgetItem而不是CustomListWidgetItems,那么每件事都可以正常工作。
标题文件内容:
PairContainer
Custom Listwidgetitem的来源内容:
template<typename Ty, typename Tu, typename Uy, typename Uu>
void bar(PairContainer<Ty, Tu>& pc1, PairContainer<Uy, Uu>& pc2)
{
pc1.foo(pc2);
}
来源内容:
class CustomTreeWidgetItem : public QTreeWidgetItem
{
public:
explicit CustomTreeWidgetItem(int type = Type);
public:
QList<CustomListWidgetItem*> projects;//Items to populate ListWidget
};
class CustomListWidgetItem : public QListWidgetItem
{
public:
explicit CustomListWidgetItem(const QIcon & icon, const QString & text, QListWidget * parent = 0, int type = Type);
CustomListWidgetItem(const int& id,QString Name,QString Description,QString icon);
public:
int Id;
QString Name;
QString Description;
QString Icon;
};
在调试过程中,我可以看到“project-&gt; projects [i]”中存在名称,描述等数据。在addItem函数调用期间没有显示错误,仍然在视图中看不到这些项目。
答案 0 :(得分:0)
几个问题: - 为什么我有混合listwidgetitem和treewidgetitem的感觉? - 每次选择项目时,为什么要填写视图?它被初始化了吗? - 您能否显示创建视图的位置并开始添加项目?
检查您是否拥有以下内容:
使用类似
的内容添加根节点QTreeWidgetItem *treeItemRoot = new QTreeWidgetItem(myTreeWidget);
treeItemRoot->setText(0, projectName);
添加子节点
QTreeWidgetItem *treeItemChild = new QTreeWidgetItem();
treeItemRoot->addChild(treeItem);
并发布结果。