C++ QListWidget:项目单击时的事件
基本上,我有以下几点: QListWidget,其中的一些项目如下:C++ QListWidget:项目单击时的事件,c++,qt,C++,Qt,基本上,我有以下几点: QListWidget,其中的一些项目如下: ListMail是我的QListWidget。 在这个QListWidget中,我有一些元素,如:“邮件1”、“邮件2” 我也不知道,我怎样才能在(例如)“邮件1”绑定到插槽(onClick)或类似的东西上发出信号 我已经试过这样的方法: connect(ui->listMail->selectedItems(0)、SIGNAL(triggered())、this、SLOT(openMessage()),但它根本不工作 有什么
ListMail
是我的QListWidget。
在这个QListWidget中,我有一些元素,如:“邮件1”、“邮件2”
我也不知道,我怎样才能在(例如)“邮件1”绑定到插槽(onClick)或类似的东西上发出信号
我已经试过这样的方法:
connect(ui->listMail->selectedItems(0)、SIGNAL(triggered())、this、SLOT(openMessage())
,但它根本不工作
有什么帮助吗
谢谢!您必须绑定到该信号。该信号将为您提供一个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.
}
}
QListWidget有一个信号
QListWidget::itemPressed(QListWidgetItem*item)
将告诉您单击了哪个项目。您可以将此信号连接到自己的插槽。还有其他相关信号。请参阅。我还应该解释为什么将QListWidgetItem
传递到connect
无效:因为它不扩展QObject
它无法发出信号(或具有插槽)。我不知道为什么,但对我来说(我使用的是PyQt版本5.7.1)itemClicked
不起作用-没有发送信号。但是当更改为itemPressed
时,没有信号problem@sunyata也许你在使用触摸界面?@andref你会这么认为,但不是,我在笔记本电脑上运行Lubuntu 16.04 LTS,我用的是usb鼠标(还尝试了触摸板下方的左键单击按钮)。但是,有一些奇怪的行为,因为有时当我单击时,信号会被发送,但这种情况可能只发生十次中的一次。无论如何,我只想在这里发布此消息,以防其他人遇到同样的情况