wxWidgets学习笔记:wxTreeCtrl使用详解

官网给出的samp

2.wxTreeCtrl使用详解

2.1头文件

#include 

2.2创建wxTreeCtrl实例

wxTreeCtrl*             m_flowTree;
m_flowTree =  new wxTreeCtrl(this, wxID_ANY,wxDefaultPosition, wxDefaultSize,wxTR_DEFAULT_STYLE);

2.3创建根节点

wxTreeItemId rootId = m_flowTree->AddRoot(_("Design Workflow"));

2.4添加新的节点

 wxTreeItemId setupId = m_flowTree->AppendItem(rootId, _("Setup"));
 itemId = m_flowTree->AppendItem(setupId, _("Design Parameters"));

2.5设置节点颜色

 wxColour color(0, 0, 255);
 m_flowTree->SetItemTextColour(itemId, color);

2.6获取节点状态

2.6.1获取根节点是否选中

要获取wxTreeCtrl控件的根节点的选择状态,您可以使用wxTreeCtrl控件的GetItemState()方法。以下是一个示例代码,用于获取根节点是否被选中:

复制

wxTreeItemId rootId = treeCtrl->GetRootItem();
int state = treeCtrl->GetItemState(rootId);

if (state & wxTreeItemState::wxTreeItemState_Selected)
{
    // 根节点被选中
}
else
{
    // 根节点未被选中
}

在这个例子中,我们使用GetRootItem()方法获取树的根节点的wxTreeItemId。然后,我们使用GetItemState()方法获取该节点的状态。GetItemState()方法返回一个整数值,表示节点的状态。我们使用位运算符&检查该节点是否被选中。如果该节点被选中,&运算符的结果将是非零值,表示该节点被选中。否则,如果该节点未被选中,&运算符的结果将是零,表示该节点未被选中。

2.6.2 获取普通节点是否选中

要获取wxTreeCtrl控件中节点的选择状态,您可以使用wxTreeCtrl控件的GetItemState()方法。以下是一个示例代码,用于获取名为targetName的节点是否被选中:

复制

wxTreeItemId rootId = treeCtrl->GetRootItem();
wxTreeItemId targetId = treeCtrl->FindItem(rootId, targetName, wxTreeTraversal::wxTreeTraversal_Down);

if (targetId.IsOk())
{
    int state = treeCtrl->GetItemState(targetId);

    if (state & wxTreeItemState::wxTreeItemState_Selected)
    {
        // 目标节点被选中
    }
    else
    {
        // 目标节点未被选中
    }
}

在这个例子中,我们使用FindItem()方法查找名为targetName的节点。如果找到了目标节点,我们使用GetItemState()方法获取该节点的状态。GetItemState()方法返回一个整数值,表示节点的状态。我们使用按位与运算符和wxTreeItemState::wxTreeItemState_Selected常量检查该节点是否被选中。如果该节点被选中,则该位将设置为1,否则为0。

2.7设置节点状态

wxWidgets设置根节点为选择或未选状态

要将wxTreeCtrl控件的根节点设置为选择或未选择状态,您可以使用wxTreeCtrl控件的SetItemState()方法。以下是一些示例代码:

复制

// 将根节点设置为已选择状态
wxTreeItemId rootId = treeCtrl->GetRootItem();
treeCtrl->SetItemState(rootId, wxTreeItemState::wxTreeItemState_Selected);

// 将根节点设置为未选择状态
wxTreeItemId rootId = treeCtrl->GetRootItem();
treeCtrl->SetItemState(rootId, 0, wxTreeItemState::wxTreeItemState_Selected);

在这些示例代码中,我们使用GetRootItem()方法获取树的根节点。要将根节点设置为已选择状态,我们使用SetItemState()方法,并将第二个参数设置为wxTreeItemState::wxTreeItemState_Selected。要将根节点设置为未选择状态,我们将第二个参数设置为0,表示未选择任何状态。

2.8获取节点文本

2.8.1根节点文本获取

要获取wxTreeCtrl控件的根节点的值,您可以使用wxTreeCtrl控件的GetItemText()方法。以下是一个示例代码,用于获取根节点的值:

wxTreeItemId rootId = treeCtrl->GetRootItem();
wxString rootValue = treeCtrl->GetItemText(rootId);

在这个例子中,我们使用GetRootItem()方法获取树的根节点的wxTreeItemId,然后使用GetItemText()方法获取该节点的文本值。GetItemText()方法返回一个表示节点文本值的wxString对象。我们将该对象分配给名为rootValue的变量,以便在以后的代码中使用。

2.8.2 获取普通节点文本

要获取wxTreeCtrl控件中节点的值,您可以使用wxTreeCtrl控件的GetItemText()方法。以下是一个示例代码,用于获取名为targetName的节点的值:

复制

wxTreeItemId rootId = treeCtrl->GetRootItem();
wxTreeItemId targetId = treeCtrl->FindItem(rootId, targetName, wxTreeTraversal::wxTreeTraversal_Down);

if (targetId.IsOk())
{
    wxString targetValue = treeCtrl->GetItemText(targetId);
}

在这个例子中,我们使用FindItem()方法查找名为targetName的节点。如果找到了目标节点,我们使用GetItemText()方法获取该节点的文本值。GetItemText()方法返回一个表示节点文本值的wxString对象。我们将该对象分配给名为targetValue的变量,以便在以后的代码中使用。

2.9设置节点文本

2.10 节点点击事件

构造函数:

Bind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );

析构函数:

Unbind( wxEVT_TREE_ITEM_ACTIVATED, &HIERARCHY_PANE::onSelectSheetPath, this );

事件响应函数:

void onSelectSheetPath( wxTreeEvent& aEvent );

在父类中:
在子类中重写:

1.快速了解wxTreeCtrl的用法

chatgpt提问:wxWidgets中什么控件与qt中的qttreeWidgets有类似功能

在wxWidgets中,wxTreeCtrl控件与Qt中的QTreeWidget控件类似,它们都是用于显示树形结构数据的控件。wxTreeCtrl控件可以用于显示树形结构的数据,并支持展开/折叠子节点、选择节点、编辑节点等功能。您可以使用wxTreeCtrl控件创建一个树形结构的数据视图,类似于Qt中的QTreeWidget控件。

chatgpt提问:将这段QT代码改写为wxTreeCtrl

QTreeWidgetItem* item = new QTreeWidgetItem;
    item->setText(0, "VPULSE_1");
    item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
    ui->treeWidget->addTopLevelItem(item);

您可以使用以下代码将上述Qt代码转换为wxWidgets中的wxTreeCtrl控件代码:

复制

wxTreeItemId rootId = treeCtrl->AddRoot("VPULSE_1");
treeCtrl->SetItemState(rootId, wxTreeItemIcon_Expanded, wxTreeItemIcon_Expanded);
treeCtrl->SetItemState(rootId, wxTreeItemIcon_Normal, wxTreeItemIcon_Normal);
treeCtrl->SetItemText(rootId, "VPULSE_1");

treeCtrl->SetItemHasChildren(rootId);
treeCtrl->SetItemBold(rootId);

这段代码创建了一个名为"VPULSE_1"的根节点,并设置其为加粗字体,具有子节点,并设置其展开/折叠的图标。

在工程中搜索wxTreeCtrl使用实例

你可能感兴趣的:(wxWidgets,qt,wxWidgets,kicad,GUI,c++)