Я пытаюсь подключить настроенный сигнал стиля взаимодействия к основному слоту виджета.
Заголовочный файл
class interactorCamera : public QObject, public vtkInteractorStyleTrackballCamera
{
Q_OBJECT
public:
static interactorCamera* New();
interactorCamera();
virtual void OnLeftButtonDown();
signals:
void signalOut();
};
class mainWidget : public QVTKOpenGLWidget
{
Q_OBJECT
public:
explicit sceneWidget(QWidget *parent = 0);
~sceneWidget();
public slots:
void getSignal();
};
Исходный файл
vtkStandardNewMacro(interactorCamera);
interactorCamera::interactorCamera(){
}
void interactorCamera::OnLeftButtonDown(){
vtkInteractorStyleTrackballCamera::OnLeftButtonDown();
qInfo() << "Camera Interactor Left Down";
emit trialsignal();
}
sceneWidget::sceneWidget(QWidget *parent) QVTKOpenGLWidget(parent)
{
// Camera, renderer, source initialization and so on...
// ...
vInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
vInteractor->SetRenderWindow(GetRenderWindow());
vtkSmartPointer<interactorCamera> interCamera = vtkSmartPointer<interactorCamera>::New();
vInteractor->SetInteractorStyle(interCamera);
connect(&interCamera, SIGNAL(trialsignal()), this, SLOT(getInteraction()));
vInteractor->Initialize();
vInteractor->Start();
}
Кажется, я не могу подключить правильные типы, и я не знаю, как это сделать.
Я получил ошибку
error: C2664: 'QMetaObject::Connection QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const': cannot convert argument 1 from 'vtkSmartPointer<interactorCamera> *' to 'const QObject *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Я тоже пытался переинтерпретировать_cast, но не смог.
connect(reinterpret_cast<QObject*>(interCamera), SIGNAL(trialsignal()), this, SLOT(getInteraction()));
На этот раз ошибка
error: C2440: 'reinterpret_cast': cannot convert from 'vtkSmartPointer<interactorCamera>' to 'QObject *'
Conversion requires a constructor or user-defined-conversion operator, which can't be used by const_cast or reinterpret_cast
Как я могу решить это?