简体   繁体   English

C++ Qt 单击或选择 QListWidget 中的 QListWidgetItem 时执行某些操作

[英]C++ Qt Do something when an QListWidgetItem from a QListWidget is clicked or selected

QListWidgetItem* lwi = new QListWidgetItem(text.c_str());
lw->addItem(lwi);
QObject::connect(lwi, &QListWidgetItem::isSelected, &lwi, []() {
    exit(0);
});

I want to do something like this, where if an item from the QListWidget is selected or clicked the program will just exit.我想做这样的事情,如果选择或单击 QListWidget 中的项目,程序将退出。 But this is not the correct syntax and I have no idea how to make it right.但这不是正确的语法,我不知道如何使它正确。 Any help?有什么帮助吗?

QListWidgetItem::isSelected is not a Qt signal.QListWidgetItem::isSelected不是 Qt 信号。

Most likely, your QListWidgetItem will be embedded in a QListWidget .您的QListWidgetItem很可能会嵌入到QListWidget中。 QListWidget provides several signals which may fit your needs. QListWidget提供了几个可能适合您需要的信号 Eg:例如:

QListWidgetItem* lwi = new QListWidgetItem(text.c_str());
lw->addItem(lwi);

// Assuming lw is a QListWidget*
QObject::connect(lw, &QListWidget::currentItemChanged,
    [lwi](QListWidgetItem* current, QListWidgetItem* /*previous*/)
    {
        if (current == lwi) std::exit(0);
    });

Please also note you don't need to pass the receiver address when connecting a signal to a lambda (or a functor, in general).另请注意,在将信号连接到 lambda (或一般的仿函数)时,您不需要传递接收者地址。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM