QTreeView 获得与被双击Item绑定的数据

evangelinelm 2010-04-17 10:30:15
在Qt中在插入一个节点(QStandardItem)时, 绑定了一个数值,怎么在这个Item被双击时获得之前绑定的那个数值呢?
例如:
insertItem = new QStandardItem(“file1”);
dateItem->setData(x);//将int 型x与file1绑定,当获得x时表示file1被双击了
parentItem->appendRow(insertItem);

就是在file1被双击时,我怎么得到x?
似乎通过
QModelIndex index= tree.currentIdex();
qDebug() << index.data().toString();
得到的是file1,而不是之前设置的x啊。所以现在的关键就是怎么获得由setData()设置进去的内容。

补充说明:在MFC中的CTreeCtrl中有getItemData()和setItemData()两个函数来完成相应的事情,Qt中有没有类似的,查了Qt Assisant,没有找到合适的。
...全文
1124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
evangelinelm 2010-04-20
  • 打赏
  • 举报
回复
楼上正解,谢谢!马上给分。
tingsking18 2010-04-20
  • 打赏
  • 举报
回复
这才是你要的值。
itemData是你设置的值,ItemModel把他放到了一个map中了
qDebug() << treeModel->itemData(index).values()[1].toString();
evangelinelm 2010-04-19
  • 打赏
  • 举报
回复
代码是没有问题的,可以编译执行。代码如下:
treeView::treeView(QWidget *parent):QWidget(parent)
{
QHBoxLayout *mainLayout = new QHBoxLayout(this);
QLabel *nameLabel = new QLabel(tr("Test"),this);
m_tree = new QTreeView(this);
mainLayout->addWidget(nameLabel);
mainLayout->addWidget(m_tree);

QStandardItem *parentItem, *insertItem;
qint64 index = 0;
treeModel = new QStandardItemModel(10, 1);
treeModel->setHeaderData(0, Qt::Horizontal, tr("Content"));
parentItem = new QStandardItem("first chapter");
parentItem->setData(index++);
treeModel->setItem(0, 0, parentItem);

insertItem = new QStandardItem("1.1 hello Qt!");
insertItem->setData(index++);
parentItem->appendRow(insertItem);

insertItem = new QStandardItem("1.2 hello world!");
insertItem->setData(index++);
parentItem->appendRow(insertItem);

m_tree->setModel(treeModel);
QObject::connect(m_tree, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onTreeViewwDobuleClicked()));
}

void treeView::onTreeViewwDobuleClicked()
{
QModelIndex index = m_tree->currentIndex();
qDebug() << index.data();
}
gemfield 2010-04-18
  • 打赏
  • 举报
回复
好像是你代码写错了吧,你全部贴上来看看
x_light 2010-04-17
  • 打赏
  • 举报
回复
我也被困扰中,不知道Treeview怎么写类似selectchanged函数

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧