Qt一个类中调用另一个类的函数

时间:2021-03-06 20:15:37
#include "stdafx.h"

class A
{
public:
int it;
A():it(100)
{

}

};
class B
{
public:
A a;
int getvalue();
protected:
private:
};
int B::getvalue()
{
return a.it;

}

int _tmain(int argc, _TCHAR* argv[])
{
B b;
int kk = b.getvalue();
return 0;
}


类似如上的调用在Qt中可以应用吗?为什么我在Qt中实现不了呢,高手指点

4 个解决方案

#1


class CGMBLogin : public QDialog
{
    Q_OBJECT

public:
    explicit CGMBLogin(QWidget *parent = 0);
    ~CGMBLogin();

public:
//QString getCurrentname();
    UserLoginInfo m_UserInfo;
    void init(UserLoginInfo UserInfo);
void autoLogin();
void setWindowReadOnly(bool readOnly);


protected:
    void mousePressEvent(QMouseEvent *e);
    void mouseMoveEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *);
    void showEvent(QShowEvent *e);

public slots:
QString getCurrentname();



private slots:
    void loginSuccessed( const QString &userTicket );
void onGetProductPermitEvent();


public Q_SLOTS:
    void onLoging(bool loging);
    void onLoginFail(QString);
    void onUpdateEvent(int updateType);
    void onTimer();
//QString getCurrentname();

protected:
    void paintEvent(QPaintEvent *);
    void createUpdateThread();
    void initUpdateTimer();
public:
//Ui::CGMBLogin* getUi();
    Ui::CGMBLogin *ui;


private:
   
    QString m_strUserName;
    QString m_strPasswd;


    // 以下两个变量用于移动窗口
    bool m_bMoving;
    QPoint pressPoint; //鼠标按下去的点
    CGMBOptions *m_LoginOptions;

CGMBLoginThread *m_loginTread;
    GSLOnlineUpdateThread *m_updateThread;
    QTimer *m_timer;

Q_SIGNALS:
    void ShowUserInfo();
    void loginRequested(const QString &userName, const QString &passWord, const bool autoLogin,const bool savePassWord);
//QString getCurrentname();
};

class CGMBLoginEdit :public QLineEdit
{
Q_OBJECT
public:
UserLoginInfo m_userInfoLog;
explicit CGMBLoginEdit(QWidget* parent=0);
Ui::CGMBLogin *m_uilog;


void clearText();

signals:
void focused();
void clicked();

protected:
void focusInEvent(QFocusEvent *);
void focusOutEvent(QFocusEvent *);
void mousePressEvent(QMouseEvent *);
private:
QString m_hintString;
CGMBLogin  *m_Login;
//extern QString m_strUserName;
};


我该如何写QString getCurrentname()它呢,为何编译没问题,一运行就出错,堆栈出错。

#2


CGMBLogin  *m_Login;

#3


QString CGMBLogin::getCurrentname()
{
return m_strUserName;

}

#4


代码不全,有两个地方要注意:首先,Ui::CGMBLogin 和CGMBLogin要搞清楚,其次,CGMBLogin  *m_Login你new出来了吗?

#1


class CGMBLogin : public QDialog
{
    Q_OBJECT

public:
    explicit CGMBLogin(QWidget *parent = 0);
    ~CGMBLogin();

public:
//QString getCurrentname();
    UserLoginInfo m_UserInfo;
    void init(UserLoginInfo UserInfo);
void autoLogin();
void setWindowReadOnly(bool readOnly);


protected:
    void mousePressEvent(QMouseEvent *e);
    void mouseMoveEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *);
    void showEvent(QShowEvent *e);

public slots:
QString getCurrentname();



private slots:
    void loginSuccessed( const QString &userTicket );
void onGetProductPermitEvent();


public Q_SLOTS:
    void onLoging(bool loging);
    void onLoginFail(QString);
    void onUpdateEvent(int updateType);
    void onTimer();
//QString getCurrentname();

protected:
    void paintEvent(QPaintEvent *);
    void createUpdateThread();
    void initUpdateTimer();
public:
//Ui::CGMBLogin* getUi();
    Ui::CGMBLogin *ui;


private:
   
    QString m_strUserName;
    QString m_strPasswd;


    // 以下两个变量用于移动窗口
    bool m_bMoving;
    QPoint pressPoint; //鼠标按下去的点
    CGMBOptions *m_LoginOptions;

CGMBLoginThread *m_loginTread;
    GSLOnlineUpdateThread *m_updateThread;
    QTimer *m_timer;

Q_SIGNALS:
    void ShowUserInfo();
    void loginRequested(const QString &userName, const QString &passWord, const bool autoLogin,const bool savePassWord);
//QString getCurrentname();
};

class CGMBLoginEdit :public QLineEdit
{
Q_OBJECT
public:
UserLoginInfo m_userInfoLog;
explicit CGMBLoginEdit(QWidget* parent=0);
Ui::CGMBLogin *m_uilog;


void clearText();

signals:
void focused();
void clicked();

protected:
void focusInEvent(QFocusEvent *);
void focusOutEvent(QFocusEvent *);
void mousePressEvent(QMouseEvent *);
private:
QString m_hintString;
CGMBLogin  *m_Login;
//extern QString m_strUserName;
};


我该如何写QString getCurrentname()它呢,为何编译没问题,一运行就出错,堆栈出错。

#2


CGMBLogin  *m_Login;

#3


QString CGMBLogin::getCurrentname()
{
return m_strUserName;

}

#4


代码不全,有两个地方要注意:首先,Ui::CGMBLogin 和CGMBLogin要搞清楚,其次,CGMBLogin  *m_Login你new出来了吗?