如果行不能移动,我建议使用一个属性:
例为平纹组织,使用复杂的索引树结构:
QPushButton btn=new QPushButton();
btn->setProperty("row", ui->treeWidget->topLevelItemCount());
void OnPreview()
{
int row = sender()->property("row").toInt();
QTreeWidgetItem* item = ui->treeWidget->topLevelItem(row);
}
否则,如果行数如果不是太大,则可以逐项循环以找出其中哪些包含该按钮:
示例在结构上,使用复杂的索引树结构:
void OnPreview()
{
for(int i = 0 ; i < ui->treeWidget->topLevelItemCount() ; i++)
{
QTreeWidgetItem* item = ui->treeWidget->topLevelItem(i);
if (ui->treeWidget->itemWidget(item, 0) == sender())
{
...
}
}
}
如果你有行的大量的,他们可以移动,创建一个哈希表来匹配按钮和项目:
QHash<QObject*, QTreeWidgetItem*> hash;
QPushButton* btn=new QPushButton();
QTreeWidgetItem *Items=new QTreeWidgetItem(ui->treeWidget);
hash[btn] = Items;
void OnPreview()
{
QTreeWidgetItem* item = hash[sender()];
...
}
你需要要么计算'OnPreview()'槽中的索引,或者保持按钮与其分配的索引之间的映射。 – vahancho 2014-10-06 08:51:55
thnx vahancho,我知道我必须在OnPreview()中做到这一点。但这是怎么回事呢?任何猜测..? – Ashish 2014-10-06 08:57:05