QTreeview之setData绑定一个对话框

QTreeview之setData绑定一个对话框

    • 一、描述
    • 二、思路
    • 三、示例代码

一、描述

问题描述:点击QTreeview节点实现弹出一个对话框,由于每点击一个节点都要弹出一个对话框,所以把对话框定义成类的成员函数肯定是不行的。但是在多次点击同一个叶子节点时会弹出多个对话框,这又不满足需求啦。

二、思路

解决思路:要满足要求有两种思路,第一种是把treview节点和对应的对话框指针保存到一个容器中,每次点击时先查看容器中是否保存了该节点对应的窗口指针,这种方法应该是可行的,但是比较麻烦点;第二种就是使用setData设置角色,我采用的就是第二种方法实现的。

三、示例代码

示例代码如下:

connect(m_tree, SIGNAL(clicked(const QModelIndex)), this, SLOT(dealShowCheckDlg(const QModelIndex)));
void MainWindow::dealShowCheckDlg(const QModelIndex &index)
{QStandardItem *pItem = m_model->itemFromIndex(index);QString indexData = "";int row = -1;QStrin