行を移動できない場合は、プロパティを使用することをお勧めします。
単純な構造の例、ツリー構造に複雑なインデックスを使用:
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()];
...
}