Qt:将受保护的QListWidget :: itemChanged信号连接到插槽

问题描述 投票:2回答:1

我根据新的connect syntax在Qt5中使用了以下语法,以避免带有可检查项目的QListWidget的槽和信号的类型不匹配。

connect(item, &QListWidget::itemChanged,this , &mainWindow::checkItemChanged);

我想运行我的插槽,以防任何列表项改变其状态。为了这个,我使用itemChanged信号由于this answer,但它受到保护,编译时错误提高如下:

error: ‘void QListWidget::itemChanged(QListWidgetItem*)’ is protected

我怎么处理这个?我应该继承自己的QListWidget,还是有其他解决方案?

c++ qt qt5 signals-slots qt-signals
1个回答
2
投票

您可以根据Qt版本使用更合适的语法:

#if QT_VERSION >= 0x050000
    connect(item, &QListWidget::itemChanged, this , &MainWindow::checkItemChanged);
#else
    connect(item, SIGNAL(checkItemChanged), this , SLOT(checkItemChanged));
#endif

(或所有版本的'旧的基于字符串')。

© www.soinside.com 2019 - 2024. All rights reserved.