Если строки не могут быть перемещены, я бы предложил использовать свойство:
Пример для простой структуры, использовать комплексный индекс для структуры дерева:
QPushButton btn=new QPushButton();
btn->setProperty("row", ui->treeWidget->topLevelItemCount());
void OnPreview()
{
int row = sender()->property("row").toInt();
QTreeWidgetItem* item = ui->treeWidget->topLevelItem(row);
}
В противном случае, если количество строк, если не слишком большое, вы можете перебирать предметы, чтобы узнать, какие из них содержат кнопку:
Пример для pla в структуре, использовать комплексный индекс для структуры дерева:
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
thnx vahancho, я знаю, что должен сделать это в OnPreview(). но как это главное? ..? Любые догадки ..? – Ashish