使用QPointer连接信号和插槽

时间:2016-10-26 08:35:48

标签: c++ qt qpointer

我正在创建gui应用程序,其中我有动态 QComboBox 。我已经使用 QPointer 来创建 QComboBox 的对象,以便智能指针管理内存泄漏。但是当我使用connect来使用currentTextChanged信号时,它给了我错误。 代码如下。

QPointer<QComboBox> CMB_ItemType = new QComboBox;
connect(CMB_ItemType, &QComboBox::currentTextChanged, [&](const QString val){ui->TW_Contents->setCellWidget(nRow, 1, CMB_ItemContent);});

ERROR:

     error: no matching function for call to 'EditRegionClass::connect(QPointer<QComboBox>&, void (QComboBox::*)(const QString&), EditRegionClass::addContent(QString, QString)::__lambda43)'
 connect(CMB_ItemType, &QComboBox::currentTextChanged, [&](const QString val){ui->TW_Contents->setCellWidget(nRow, 1, CMB_ItemContent);});
                                                                                                                                                    ^

我可以在QPointer中使用信号和插槽吗?

1 个答案:

答案 0 :(得分:0)

我的测试版本效果很好:

QPointer<QLineEdit> le = new QLineEdit;
connect(le, &QLineEdit::textChanged, this, &QWidget::close);

我认为你的lambda存在一些问题。