Fixed crash on startup with vtk6+qt5. All cloud viewers in QDockWidget are now created manually instead of being defined in the *.ui files. The generated ui didn't pass the top level parent window to constructor of CloudViewer, which caused a problem when initializing the QVTKWidget.

This commit is contained in:
matlabbe
2016-05-05 18:25:26 -04:00
parent 74d0bfa1bb
commit ad0afc58c0
11 changed files with 455 additions and 250 deletions

View File

@@ -206,6 +206,8 @@ public:
Transform getTargetPose() const;
void setBackfaceCulling(bool enabled, bool frontfaceCulling);
void setRenderingRate(double rate);
double getRenderingRate() const;
void getCameraPosition(
float & x, float & y, float & z,
@@ -275,6 +277,7 @@ private:
QAction * _aSetGridCellCount;
QAction * _aSetGridCellSize;
QAction * _aSetBackgroundColor;
QAction * _aSetRenderingRate;
QMenu * _menu;
std::set<std::string> _graphes;
std::set<std::string> _coordinates;
@@ -297,6 +300,7 @@ private:
QColor _currentBgColor;
bool _backfaceCulling;
bool _frontfaceCulling;
double _renderingRate;
};
} /* namespace rtabmap */

View File

@@ -157,6 +157,10 @@ private:
private:
Ui_DatabaseViewer * ui_;
CloudViewer * constraintsViewer_;
CloudViewer * cloudViewerA_;
CloudViewer * cloudViewerB_;
CloudViewer * stereoViewer_;
QList<int> ids_;
std::map<int, int> mapIds_;
QMap<int, int> idToIndex_;

View File

@@ -45,7 +45,7 @@ class RTABMAPGUI_EXP LoopClosureViewer : public QWidget {
Q_OBJECT
public:
LoopClosureViewer(QWidget * parent);
LoopClosureViewer(QWidget * parent = 0);
virtual ~LoopClosureViewer();
void setData(const Signature & sA, const Signature & sB); // sB contains loop transform as pose() from sA

View File

@@ -52,6 +52,7 @@ class CameraOpenni;
class CameraFreenect;
class OdometryThread;
class CloudViewer;
class LoopClosureViewer;
}
class QGraphicsScene;
@@ -307,6 +308,9 @@ private:
ProgressDialog * _initProgressDialog;
CloudViewer * _cloudViewer;
LoopClosureViewer * _loopClosureViewer;
QString _graphSavingFileName;
QMap<int, QString> _exportPosesFileName;
bool _autoScreenCaptureOdomSync;