簡體   English   中英

如何在QTreeWidget中找到所選項目?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM