我有两个类,MyClassWidget。下面是MyClass类,我想从我的Widget类中获取str变量。怎么做?

class MyClass : public QObject
{
    Q_OBJECT

public:
    MyClass();
    void fetch();

public slots:
    void replyFinished(QNetworkReply*);

private:
    QNetworkAccessManager* m_manager;
};

MyClass::MyClass()
{
    m_manager = new QNetworkAccessManager(this);

    connect( m_manager, SIGNAL(finished(QNetworkReply*)),
             this, SLOT(replyFinished(QNetworkReply*)));
}

void MyClass::fetch()
{
    m_manager->get(QNetworkRequest(QUrl("http://stackoverflow.com")));
}

void MyClass::replyFinished(QNetworkReply* pReply)
{
    QByteArray data=pReply->readAll();
    QString str(data);

    //this str should be available in my widget class
}


编辑:这是小部件的重要部分

namespace Ui {
    class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    //here str should be accessed
}

最佳答案

如果希望函数中的str变量可用于类或其他函数,则有两个选择:


从函数返回它。
在MyClass中声明一个变量以保存字符串并设置
变量值。


情况1:从函数返回

QString MyClass::replyFinished(...)
{
  QString str(data);
  return data;
}


情况2:声明一个类成员变量

class MyClass
{
  public:
     QString m_replyStr;
};
//...
void MyClass::replyFinished(...)
{
  QByteArray data = pReply->readAll();
  m_replyStr = data;
}


用您想做的事例修改您的问题将非常有帮助。

关于c++ - 从另一个类访问变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17199798/

10-13 08:34
查看更多