如何在QTreeWidget中为子组件创建子组件
How to make a subchild to a child in QTreeWidget?
我想这样做,以便我可以将第三级(子级)扩展为顶级项(根)下的子级。我所能做的就是为一个根创建多个子节点。
这是我的。cpp
QStringList string1, string2;
string1 << "xxxxxxxx" << "xxxxxxxxxxx";
string2 << "yyyyyy" << "yy";
m_treeWidget->insertTopLevelItem(0, new QTreeWidgetItem(string1));
m_treeWidget->insertTopLevelItem(1, new QTreeWidgetItem(string2));
//here I add a child
AddChild(m_treeWidget->topLevelItem(0),"hello","world", m_treeWidget);
//here I make two attempts to make a sub child
AddChild(m_treeWidget->itemBelow(m_treeWidget->topLevelItem(0)),"hello_sub1","world_sub1", m_treeWidget);
AddChild(m_treeWidget->itemAt(0,0),"hello_sub2","world_sub2", m_treeWidget);
下面是我的添加子方法也在同一个。cpp文件:
void Dialog::AddChild (QTreeWidgetItem *parent, QString name, QString Description, QTreeWidget* treeWidget)
{
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget);
item->setText(0,name);
item->setText(1, Description);
parent->addChild(item);
}
为了创建树形层次结构,您可以使用QTreeWidgetItem
的API,特别是它的构造函数。构造函数可以接受QTreeWidget
或QTreeWidgetItem
作为父对象。在第一种情况下,顶级项目将添加到树小部件中,在第二种情况下,将添加到另一项的子项目中。这个API更容易使用,因为您不需要显式地将项附加到树小部件。下面是实现这个想法的示例代码:
QStringList string1, string2;
string1 << "xxxxxxxx" << "xxxxxxxxxxx";
string2 << "yyyyyy" << "yy";
QTreeWidget tv;
// The top level items
QTreeWidgetItem *top1 = new QTreeWidgetItem(&tv, string1);
QTreeWidgetItem *top2 = new QTreeWidgetItem(&tv, string2);
// A child item.
QTreeWidgetItem *child1 =
new QTreeWidgetItem(top1, QStringList() << "Hello" << "World");
// The grandchildren.
new QTreeWidgetItem(child1, QStringList() << "Hello_sub1" << "World_sub1");
new QTreeWidgetItem(child1, QStringList() << "Hello_sub2" << "World_sub2");
实际上我可以用另一种方法解决…
.cpp:
//Initialize the QTreeWidget with 2 columns
QTreeWidget m_treeWidget = new QTreeWidget();
m_treeWidget->setColumnCount(2);
//these are the method calls:
AddRoot("Root1_Column1", "Root2_Column2", m_treeWidget);
AddRoot("Root2_Column1", "Root2_Column2", m_treeWidget);
//topLevelItem(0) makes it a child of the first root... topLevelItem(1) makes it a child of the second root
AddChild(m_treeWidget->topLevelItem(0),"Child1_Column1","Child1_Column2");
AddChild(m_treeWidget->topLevelItem(1),"Child2_Column1","Child2_Column2");
AddSubChild(m_treeWidget->itemBelow(m_treeWidget->topLevelItem(0)),"SubChild_Column1", "SubChild_Column2");
这些是我在同一个。cpp文件中使用的方法:
void Dialog::AddRoot (QString name, QString Description, QTreeWidget* treeWidget)
{
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget);
item->setText(0,name);
item->setText(1,Description);
item->setExpanded(true); //expand automatically
treeWidget->addTopLevelItem(item);
}
void Dialog::AddChild (QTreeWidgetItem *parent, QString name, QString Description)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(0,name);
item->setText(1, Description);
parent->addChild(item);
}
void Dialog::AddSubChild (QTreeWidgetItem *parent, QString name, QString Description)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(0,name);
item->setText(1, Description);
parent->addChild(item);
}
相关文章:
- 是否可以从C++创建 Qml 组件?
- 如何实现由TPAINTBOX创建的新组件的OnMousedown,OnMouseUp事件
- 如何从 UTC 时间戳的组件(Y,M,D,H,M,S,MS)创建system_clock::time_point
- 在 opencv 中从 Mat 图像创建多个子图像?尝试为每个连接的组件创建子图像
- 在C++/WRL中使用静态方法创建WinRT组件
- 现在创建COM组件的最佳方式是什么
- QML:如何将动态创建的组件与自定义的内部对象一起使用
- 使用MSVSc++创建OLE组件库
- 如何使用 qml 组件(不带 C++)创建插件的 deb 包
- 无法更改从C++动态创建的 QML 组件的属性
- 是否可以创建一个由透明浏览器组件组成的无窗口 mfc c++ 应用程序
- 在创建子小组件后设置父小组件时,子小组件对事件是透明的
- 将组件添加到qt创建者从代码中创建的布局中
- 创建我自己的Qt组件/小部件/工具的方式
- 如何在QTreeWidget中为子组件创建子组件
- 如何在c++中创建一个简单的COM组件
- QtQuick:从c++创建组件
- c++ /QML:如何为动态创建的组件定义和处理多个上下文
- 注册和使用ActiveX/COM组件,该组件是使用运行时生成的UUID通过IDL创建的
- 如何从C/ c++项目中创建运行时组件