Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QListWidget:项目单击时的事件_C++_Qt - Fatal编程技术网

C++ 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()),但它根本不工作 有什么

基本上,我有以下几点:

QListWidget,其中的一些项目如下:

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鼠标(还尝试了触摸板下方的左键单击按钮)。但是,有一些奇怪的行为,因为有时当我单击时,信号会被发送,但这种情况可能只发生十次中的一次。无论如何,我只想在这里发布此消息,以防其他人遇到同样的情况