我正在使用Qt中的opencv,为我的论文做一些视频识别。
所以我有一个主窗口(显示摄像头和一些用于摄像机设置的滑块)和一个对话窗口,当按下带有滑块的按钮进行高级设置时,该窗口会打开。我的问题是: 我在像
这样的类的实例中创建Moving M;
M.BasicSetting1 = someValue;
但我无法在另一个窗口(对话框)中访问M实例,以设置M.AdvencedSettings。
那么我在哪里以及如何创建类的实例移动以在mainwindow.cpp和dialog.cpp中设置它的参数?我希望我足够清楚......也许如果有人可以发布一个多变的简单示例,如何做到这一点。非常感谢你的帮助!
这是我所拥有的(我不会发布完整的代码,因为这样会更容易(我希望我不会:) :)
Moving.h //where my class is defined which accesses my webcam and stuff
mainwindow.h //mainwindow where it shows the video with basicsettings
dialog.h //some advanced settings for the webcam
main.cpp
Moving.cpp
Mainwindow.cpp
dialog.cpp
Moving.h
class Moving
{
public:
int BasicSetting1;
int Basic Setting2;
int AdvancedSetting1;
int AdvancedSetting2;
//lots of other stuff
Moving();
~Moving();
void move(); //starts and shows the camera
};
mainwindow.cpp
#include "Moving.h"
#include "mainwindow.h"
Moving M;
M.BasicSetting1 = SliderValue;
M.move(); //shows camera
//and of course lots of other stuff
答案 0 :(得分:4)
如果我正确读取了您的代码,那么您将在堆栈上创建Moving
的实例。共享指针或对堆栈对象的引用可能很危险。相反,您可以在Moving
中声明mainwindow
并添加getter类型方法(即Moving* getMoving()
)以返回指向Moving
对象的指针。然后给对话框指向mainwindow
。
所有这一切对于编程概念都是非常基础的。在写论文之前,也许你应该阅读一些教程并做一些其他较小的东西;修补坏代码可能非常耗时。