如何使用创建的类创建类`方法?

时间:2017-05-04 07:58:27

标签: c++ qt methods usability

我有一个问题:

我有一个用户界面 MoveSeries 。从MoveSeries我想要访问我的类us​​erinterface的方法。在这个例子中,我希望能够访问userinterface的方法get_MoveCurve_Delta()。 如何从创建的类中访问创建类(userinterface)(MoveSeries?我尝试了Signal-Slot-Approach,但由于我必须多次使用多种用户界面方法,因此信号时隙...

这是我的代码:

Userinterface.h:

 class UserInterface : public QMainWindow
 {
     Q_OBJECT

 public:
     UserInterface(QWidget *parent = 0, Qt::WFlags flags = 0);
     ~UserInterface();
     ...
 private:
     double MoveCurve_Delta;
     MoveSeries *MOVE_SERIES  ;
 public:
     void set_MoveCurve_Delta( double val)     { MoveCurve_Delta  = val;}
     double get_MoveCurve_Delta()      { return MoveCurve_Delta  ;}
 }

Userinterface.cpp:

 UserInterface::UserInterface(QWidget *parent, Qt::WFlags flags) :          
 QMainWindow(parent, flags)
 {
     ui.setupUi(this);
     ...

     MOVE_SERIES = new MoveSeries( this);
 }

MoveSeries.h:

  class MoveSeries : public QDialog
  {
     Q_OBJECT
 public:
     explicit MoveSeries(QWidget *parent = 0);
     ~MoveSeries();
     ...

MoveSeries.cpp:

 MoveSeries::MoveSeries(QWidget *parent) :
 QDialog(parent),ui(new Ui::MoveSeries)
 {
     ui->setupUi(this);
     this->parent = parent;    
     parent->set-MoveSeries_Delta_Val();
 }

3 个答案:

答案 0 :(得分:2)

不要假设MoveSeries中的父QWidget是UserInterface,您也可以要求它。

MoveSeries.h:

 #include "Userinterface.h" // include the header where it is required

 MoveSeries::MoveSeries(UserInterface *parent) :
 QDialog(parent), ui(new Ui::MoveSeries), uiparent(parent)
 {
     ui->setupUi(this);
     uiparent->set-MoveSeries_Delta_Val();
 }

MoveSeries.cpp:

jQuery.ajax({
            type:"post",
            dataType:"json",
            async: false,
            url: myAjax.ajaxurl,
            data: {action: 'submit_data', info: info},
            success: function(data) {
                alert("Data was succesfully captured");
            },
        });

答案 1 :(得分:1)

看起来您想将父级转换为您想要的类:

static_cast<UserInterface *>(parent)->get_MoveCurve_Delta();

请记住,这可能是危险的,因为它会对父母的类型做出假设。

答案 2 :(得分:1)

如果您只想UserInterface成为MoveSeries的父母,请说明:

  explicit MoveSeries(UserInterface *parent = 0);

如果您希望任何小部件能够充当父级,则无法访问UserInterface方法,因为父级不一定拥有它们。