Я хочу преобразовать QString
из другого класса toInt
, но он не работает, потому что результат равен 0, а он должен быть 5, а остальная часть кода работает , Поскольку я новичок в C/Qt и считаю классы немного запутанными, я думаю, что сделал что-то не так с моими классами.QString :: toInt() не работает при преобразовании QString из другого класса
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
MyClass tmp;
int myNumber = tmp.m_replyStr.toInt();
ui->lcdNumber->display(myNumber);
}
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://example.tld/test.html"))); // html contains only the number 5
}
void MyClass::replyFinished(QNetworkReply* pReply)
{
QByteArray data=pReply->readAll();
QString str(data);
m_replyStr = str;
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
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;
};
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass();
void fetch();
QString m_replyStr;
public slots:
void replyFinished(QNetworkReply*);
private:
QNetworkAccessManager* m_manager;
};
#endif // WIDGET_H
Можете ли вы рассказать мне, как получить доступ к классу, не создавая новый экземпляр? –
@UlfricStorm Этот вопрос не имеет смысла. Класс - это тип, набор свойств (= данных и функций), которые имеют его экземпляры. Это как просить «как получить доступ к' int', не создавая целочисленную переменную? » Если вы хотите, чтобы «Виджет» представлял состояние экземпляра «MyClass», создайте экземпляр «MyClass» и сделайте экземпляр «Widget» осведомленным об этом. Скорее всего, предоставив «Виджет» члену данных типа (умный) указатель на «MyClass» и соответствующим образом заполнив его. – Angew
@UlfricStorm Я добавил пример ответа. – Angew