c++ - 将 lambda 函数用于 SIGNAL/SLOT 连接时出错
问题描述
我试图给 QtableView 一个特定的行为。如果我选择一个单元格并用鼠标拖动它,则只会选择同一列中的单元格。
为此,并搜索类似的问题,我已经尝试使用 lambda 函数。
它可以在表(自定义表)的构造函数中正常工作,如下所示:
主窗口.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
MiTabla *tabla = new MiTabla;
tabla->setModel(new MiModelo());
tabla->setItemDelegate(new MiDelegado());
selectionModel = tabla->selectionModel();
setCentralWidget(tabla);
QObject::connect(selectionModel,&QItemSelectionModel::selectionChanged,[=]()
{
foreach (const QModelIndex& item, selectionModel->selectedIndexes())
{
if (item.column()!=tabla->indiceActual().column())
{
selectionModel->select(item,QItemSelectionModel::Deselect);
}
}
});
}
但是如果我在表的构造函数中建立连接,它会抛出这个错误:
QObject::connect: invalid null parameter
MiTabla::MiTabla()
{
miSelectionModel = selectionModel();
QObject::connect(this,SIGNAL(pressed(QModelIndex)),this,SLOT(CambiarIndiceACtual(QModelIndex)));
QObject::connect(miSelectionModel,&QItemSelectionModel::selectionChanged,[=]()
{
foreach (const QModelIndex& item, miSelectionModel->selectedIndexes())
{
if (item.column()!=m_indiceActual.column())
{
miSelectionModel->select(item,QItemSelectionModel::Deselect);
}
}
});
}
我的问题是为什么表的构造函数中的连接不起作用
解决方案
推荐阅读
- html - 无法使用 Bootstrap 对齐同一行中的图像
- angular - 在角度 6 中将 Source 按钮添加到 ngx-quill
- razor - ASP.NET Core 页面:部分
- javascript - BigCommerce Hello World 应用程序 - 在商店中使用应用程序
- python - 从 2 个不同的数据框 pandas 添加两列的值
- python - 如何消除python输入中变量和字符串之间的空格?
- python - 从 Python 控制 Alexa [播放、暂停、播放列表]
- android - 如何在 Camera2 API Android 的叠加层内捕获图像?
- amazon-web-services - 在特定子网中创建 EKS kubernetes pod
- kotlin - 如何确保一个类只能用另一个类的对象实例化,而不暴露内部?