Qt将一个派生的QListwidgetitem添加到QListWidget

时间:2016-01-05 14:39:38

标签: c++ qt

我已经将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函数调用期间没有显示错误,仍然在视图中看不到这些项目。

1 个答案:

答案 0 :(得分:0)

几个问题:   - 为什么我有混合listwidgetitem和treewidgetitem的感觉?   - 每次选择项目时,为什么要填写视图?它被初始化了吗?   - 您能否显示创建视图的位置并开始添加项目?

检查您是否拥有以下内容:

  1. 创建一个添加到视图布局的qtreewidget
  2. 使用类似

    的内容添加根节点
    QTreeWidgetItem *treeItemRoot = new QTreeWidgetItem(myTreeWidget);
    treeItemRoot->setText(0, projectName);
    
  3. 添加子节点

    QTreeWidgetItem *treeItemChild = new QTreeWidgetItem();
    treeItemRoot->addChild(treeItem);
    
  4. 并发布结果。