[英]How can I find the selected item in a QTreeWidget?
我有一個繼承QTreeWidget的類。 如何找到當前選中的行? 通常我以這種方式將信號連接到插槽:
connect(myButton, SIGNAL(triggered(bool)), this, SLOT(myClick()));
但是,我找不到與QTreeWidget->QTreeWidgetItem
類似的東西。 我發現的唯一方法是像這樣重新定義QTreeWidget類的mousePressEvent:
void MyQTreeWidget::mousePressEvent(QMouseEvent *e){
QTreeView::mousePressEvent(e);
const QModelIndex index = indexAt(e->pos());
if (!index.isValid())
{
const Qt::KeyboardModifiers modifiers = QApplication::keyboardModifiers();
if (!(modifiers & Qt::ShiftModifier) && !(modifiers & Qt::ControlModifier))
clearSelection();
}
}
我還沒有嘗試過。 是唯一的解決方案,還是有更簡單的方法?
塵土飛揚幾乎是正確的。 但是itemSelectionChanged信號不會告訴您選擇了哪個項目。
QList<QTreeWidgetItem *> QTreeWidget::selectedItems() const
將為您提供選定的項目。
因此,將插槽連接到itemSelectionChanged信號,然后在樹小部件上調用selectedItems()以獲取選定的項目。
您可以簡單地使用:
QString word = treeWidget->currentItem()->text(treeWidget->currentColumn());
使您的文本中的單詞可變。
使用itemClicked()信號將丟失使用鍵盤進行的任何選擇更改。 我認為這對您來說是一件壞事。
根據此處的文檔,您似乎應該將QTreeWidget itemSelectionChanged()信號連接到類中的插槽。 這將告訴您選擇了哪個QTreeWidgetItem ,這是我相信您想要的。
糟糕,我已經使用以下方法解決了問題:
connect(this,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(mySlot()));
但是感謝您的回復:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.