class TreeWidget : public QTreeWidget
{
Q_OBJECT
public:
TreeWidget(QWidget* parent = 0) : QTreeWidget(parent)
{
connect(this, &QTreeWidget::itemClicked, this, &TreeWidget::onItemClicked);
}
public slots:
void onItemClicked(QTreeWidgetItem* item, int column)
{
auto _item = dynamic_cast<QTreeWidgetItem*>(item);
qDebug() << "item: " << item << " _item: << _item;
// if (item == 0) { ... }
// elseif ...
}
}
我對如何獲取 a 的單擊專案感到困惑QTreeWidget,在我的示例中,qDebug()列印item: 0x2a64e3edfb0的內容是什么是“正確”的閱讀方式?
我正在嘗試根據單擊的專案執行不同的操作。
uj5u.com熱心網友回復:
在您的代碼item: 0x2a64e3edfb0中是您的物件,而0x2a64e3edfb0是您的物件在記憶體中的地址。
但是您的 QTreeWidgetItem 物件具有與其文本類似的功能和屬性,您可以像這樣獲得它:
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
qDebug() << "item: " << item <<","<<item->text(column);
}
要獲取 QTreeWidgetItem 的索引,您應該從您的父母那里獲取它QTreeWidget
像這樣 :
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
qDebug() << "item: " <<ui->treeWidget->indexOfTopLevelItem(item);
}
輸出 :

如果 item 是分支的子項,則可以使用:
qDebug() << "item: " <<ui->treeWidget->indexFromItem(item,column).row();
查看 QTreeWidget::indexFromItem函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523405.html
標籤:C qt
