QListWidget:项目点击事件
Posted
技术标签:
【中文标题】QListWidget:项目点击事件【英文标题】:QListWidget : Event on item click 【发布时间】:2013-03-09 13:31:43 【问题描述】:基本上,我拥有的是以下内容:
一个 QListWidget,里面有一些像这样的项目:
ListMail
是我的 QListWidget。
在这个 QListWidget 中,我有如下元素:“Mail 1”、“Mail 2”、...
我不知道,如何在(例如)“Mail 1”上发出信号,绑定到插槽(onClick)或类似的东西。
我已经尝试过类似的方法:
connect(ui->listMail->selectedItems(0), SIGNAL(triggered()), this, SLOT(openMessage())
,但是根本不行……
有什么帮助吗?
谢谢!
【问题讨论】:
【参考方案1】:您必须绑定到itemClicked
信号。该信号将为您提供QListWidgetItem*
,这是被点击的项目。然后您可以检查它并检查它是否是第一个:
MyClass::MyClass(QWidget* parent)
: QWidget(parent)
connect(ui->listMail, SIGNAL(itemClicked(QListWidgetItem*)),
this, SLOT(onListMailItemClicked(QListWidgetItem*)));
void MyClass::onListMailItemClicked(QListWidgetItem* item)
if (ui->listMail->item(0) == item)
// This is the first item.
【讨论】:
我还应该解释为什么将QListWidgetItem
传递给connect
不起作用:因为它没有扩展QObject
,它不能发出信号(或有槽)。
我不知道为什么,但对我来说(我使用的是 PyQt 版本 5.7.1)itemClicked
不起作用 - 没有发送信号。但是改成itemPressed
就没有问题了
@sunyata 您可能在使用触摸界面?
@andref 您会这么认为,但不,我在笔记本电脑上运行 Lubuntu 16.04 LTS,并且我使用了 USB 鼠标(也尝试使用触摸板下方的左键单击按钮)。但是有一些奇怪的行为,因为有时当我点击发送信号 is 时,这种情况可能只发生十分之一。无论如何,我只是想在这里发布这个,以防其他人遇到同样的事情【参考方案2】:
QListWidget 有一个信号QListWidget::itemPressed(QListWidgetItem *item)
,它会告诉你哪个项目被点击了。您可以将此信号连接到您自己的插槽。还有其他相关信号。请参阅documentation。
【讨论】:
以上是关于QListWidget:项目点击事件的主要内容,如果未能解决你的问题,请参考以下文章
处理 RecyclerView 项目的点击事件和项目内按钮的点击事件。避免同时听两者