如何获得指针在QTreeWidget索引
How to get Pointer to Index in QTreeWidget?
我已经创建了一个QTreeWidget,并用结构数据(myObj.name, myObj.name, myObj.name)填充它。myObj强加于人。年龄,等等)。
当我在小部件中选择一个项目时,我需要获取与该选择相关联的指针数据,以便在其他地方显示它。
我用指针创建了列表,我只需要弄清楚当我在列表上选择时如何反过来检索这些指针。
所以我能够通过使用QMap实现我所需要的。
QMap<QTreeWidgetItem*, myObject*> myMap_container;//declared in .h
然后在my cpp:
void MainWindow::on_myTree_itemClicked(QTreeWidgetItem *item, int column){
myObject* rowData = myMap_container[item];
}
从那里,我能够访问我的结构体数据的全部已分配如下:
cout << rowData.Name << endl;
cout << rowData.Age << endl;
cout << rowData.SSN<< endl;
cout << rowData.FavColor<< endl;
要访问QTreeWidget(或者说是QTreeWidget免费提供的预定义树模型)中的数据,您可以利用QTreeWidget在用户交互时发出的信号之一。即点击(QModelIndex)。
QTreeWidget文档列出了所有可用的信号:(http://doc.qt.io/qt-5/qtreewidget.html#details)
例如:
connect(this, SIGNAL(clicked(QModelIndex)), this, SLOT(print_item(QModelIndex)));
其中'this'类型为QTreeWidget。(我已经在树结构中填充了许多QString项),
有了上面连接的Signal和Slot,单击我的树项目之一会导致执行以下方法,
void MainWindow::print_item(QModelIndex index){
qDebug()<<"Item :"<<index.data().toString();
}
可以看到,'clicked'信号传递的参数是一个QModelIndex,然后我在上面的方法中使用它来访问树项中的数据。
当我在这里看到树小部件而不是抽象模型时,我猜您正在小部件中使用列。例如,您的节点有三列:name(0列),DOB(1列)和age(2列)。
如果是这种情况,简单的方法是:
QList<QTreeWidgetItem *> QlistTreeWId = YourTree->selectedItems();
检查列表大小,如果size存在,则
yourObject.name = QlistTreeWId [0].text(0); //name column.
yourObject.DOB= QlistTreeWId [0].text(1); //DOB column.
yourObject.age= QlistTreeWId [0].text(2); //Age column.
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 如何为圆环创建索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 查找字符在两个索引之间出现的次数
- Azure Kinect 使用正文索引映射裁剪正文
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 数组索引重载错误
- 如何获得指针在QTreeWidget索引