1

我在 Qt 中使用 opencv,为我的论文做一些视频识别工作。

所以我有一个主窗口(显示相机和一些用于相机设置的滑块)和一个对话框窗口,当按下带有滑块的按钮进行高级设置时,它会打开。我的问题是:我在一个类的实例中创建

Moving M; 

在 mainwindow.cpp 中,我可以设置参数,例如

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

移动.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

    };

主窗口.cpp

      #include "Moving.h"
      #include "mainwindow.h"


        Moving M;

        M.BasicSetting1 = SliderValue; 

        M.move();  //shows camera



    //and of course lots of other stuff
4

1 回答 1

4

如果我正确阅读了您的代码,那么您正在Moving堆栈上创建实例。共享堆栈对象的指针或引用可能很危险。相反,您可以Moving在您的声明中mainwindow添加一个 getter 类型方法(即Moving* getMoving())以返回指向您的Moving对象的指针。然后给你的 Dialog 一个指向mainwindow.

所有这些都是编程概念的基础。也许您应该在写论文之前阅读一些教程并做一些其他较小的事情;修补错误代码可能非常耗时。

于 2012-12-06T11:47:57.860 回答