Qt将派生的QListwidgetitem添加到QListWidget
Qt adding a derived QListwidgetitem to QListWidget
我已经将QTreeWidget、QTreeWidgetItem和QListWidgetItem进行了子类化。我正试图将我的自定义QListWidgetItem添加到QListWidget中,但它没有显示在视图中。
我创建了一个对话框。我已经插入了一个QTreeWidget和QListWidget。我想要的是,当我点击QTreeWidget中的一个项目时,QListWidget应该填充我的自定义QListWidgetItems,即包含在点击的CustomTreeWidgetItem中的CustomListWidgetItems(QTreeWidgetItem派生类)。如果我使用QListWidgetItem而不是CustomListWidgetItems,那么一切都很好。
头文件内容:
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;
};
自定义Listwidgetitem的源内容:
CustomListWidgetItem::CustomListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent, int type) : QListWidgetItem(icon,text,parent,type)
{
}
CustomListWidgetItem::CustomListWidgetItem(const int& id,QString Name,QString Description,QString icon)
{
this->Id = id;
this->Name = Name;
this->Description = Description;
this->Icon = icon;
QString iconPath = QCoreApplication::applicationDirPath() + "/" + icon + ".png";
QIcon qIcon(iconPath);
QListWidgetItem::QListWidgetItem(qIcon,Name);
}
来源内容:
void CustomTreeWidget::treeitemSelected(QTreeWidgetItem * item, int)//Tree item click event
{
CustomTreeWidgetItem *project = static_cast<CustomTreeWidgetItem*>(item);
if(LISTWIDGET)
{
m_listWidget->clear();
m_listWidget->setSelectionMode(QAbstractItemView::SingleSelection);
int count = project->projects.count();
if(count == 0)
{
m_listWidget->addItem("No Projects Here");//This gets displayed
m_listWidget->setSelectionMode(QAbstractItemView::NoSelection);
}
else
{
for (int i = 0; i < count; ++i)
{
m_listWidget->addItem(project->projects[i]);//This does not get displayed
}
}
}
}
在调试过程中,我可以看到"project->projects[I]"中存在数据,即名称、描述等。addItem函数调用期间没有显示任何错误,但这些项在视图中仍然不可见。
几个问题:-为什么我有一种你把列表和树混合在一起的感觉?-为什么每次选择项目时都要填充视图?它初始化了吗?-您能显示在哪里创建视图并开始添加项目吗?
检查您是否有以下内容:
- 创建一个添加到视图布局中的qtreewidget
-
使用类似的东西添加根节点
QTreeWidgetItem *treeItemRoot = new QTreeWidgetItem(myTreeWidget); treeItemRoot->setText(0, projectName);
-
添加子节点
QTreeWidgetItem *treeItemChild = new QTreeWidgetItem(); treeItemRoot->addChild(treeItem);
并发布结果。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- C - 从qpushbutton将项目添加到Qlistwidget
- 是否通过其他按钮将单选按钮添加到QListWidget或从QListWidget中删除单选按钮?问题
- 将项目添加到 QListWidget 增加设计时间
- Qt将派生的QListwidgetitem添加到QListWidget
- 将数组中的图标添加到QListWidget项
- 向QListWidget添加操作
- 未添加 QListWidget 项(多项选择)
- 向QListWidget的现有项添加文本
- 如何在小部件(如QlistWidget区域)上添加qmenu或Qactions作为列表项