C++单击或选择了QListWidget的QlistWidgetItem时QT做某事

发布于 2025-02-01 07:42:32 字数 265 浏览 3 评论 0原文

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

我想做这样的事情,如果选择或单击QListWidget的项目,则该程序将刚退出。但这不是正确的语法,我不知道如何正确。有帮助吗?

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. But this is not the correct syntax and I have no idea how to make it right. Any help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南薇 2025-02-08 07:42:32

最有可能的是,您的qlistWidgetItem将嵌入
qlistwidget QListWidget
提供几个信号
这可能适合您的需求。例如:

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);
    });

还请注意,当“ nofollow noreferrer”>将信号连接到lambda (通常是函子)。

QListWidgetItem::isSelected is not a Qt signal.

Most likely, your QListWidgetItem will be embedded in a
QListWidget. QListWidget
provides several signals
which may fit your needs. E.g.:

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文