如果行不能移動,我建議使用一個屬性:
例爲平紋組織,使用複雜的索引樹結構:
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