我有两个类,MyClass
和Widget
。下面是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/