如何使用创建的 class 中的创建 class` 方法?
How to use the creating class` methods from the created class?
我有一个问题:
我有一个class用户界面,有一个classMoveSeries。我想从 MoveSeries 访问我的 class 用户界面的方法。在这个例子中,我想访问用户界面的 get_MoveCurve_Delta() 方法。 如何从创建的 class(MoveSeries? 访问创建的 class(用户界面)? 我尝试了 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();
}
您似乎想将父级转换为您想要的 class:
static_cast<UserInterface *>(parent)->get_MoveCurve_Delta();
请记住,这可能很危险,因为它会假设父级的类型。
与其假设 MoveSeries 中的父 QWidget 是 UserInterface,您还可以要求它是。
MoveSeries.h:
class UserInterface; // only need a forward declaration
class MoveSeries : public QDialog
{
Q_OBJECT
public:
explicit MoveSeries(UserInterface *parent = 0);
~MoveSeries();
...
UserInterface * uiparent;
}
MoveSeries.cpp:
#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();
}
如果您只想 UserInterface
成为 MoveSeries
的父级,请这样说:
explicit MoveSeries(UserInterface *parent = 0);
如果您希望任何 小部件能够充当父级,您不能访问UserInterface
方法,因为父级不一定具有它们。
我有一个问题:
我有一个class用户界面,有一个classMoveSeries。我想从 MoveSeries 访问我的 class 用户界面的方法。在这个例子中,我想访问用户界面的 get_MoveCurve_Delta() 方法。 如何从创建的 class(MoveSeries? 访问创建的 class(用户界面)? 我尝试了 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();
}
您似乎想将父级转换为您想要的 class:
static_cast<UserInterface *>(parent)->get_MoveCurve_Delta();
请记住,这可能很危险,因为它会假设父级的类型。
与其假设 MoveSeries 中的父 QWidget 是 UserInterface,您还可以要求它是。
MoveSeries.h:
class UserInterface; // only need a forward declaration
class MoveSeries : public QDialog
{
Q_OBJECT
public:
explicit MoveSeries(UserInterface *parent = 0);
~MoveSeries();
...
UserInterface * uiparent;
}
MoveSeries.cpp:
#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();
}
如果您只想 UserInterface
成为 MoveSeries
的父级,请这样说:
explicit MoveSeries(UserInterface *parent = 0);
如果您希望任何 小部件能够充当父级,您不能访问UserInterface
方法,因为父级不一定具有它们。