gpt4 book ai didi

c++ - 从另一个类转换 QString 时 QString::toInt() 失败

转载 作者:行者123 更新时间:2023-11-27 23:14:37 28 4
gpt4 key购买 nike

我想将另一个类 QString 转换为 Int,但它似乎失败了,因为结果是 0 而它应该是 5 并且其余代码有效.因为我是 C/Qt 的新手并且发现类有点困惑,所以我认为我的类做错了什么。

小部件.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;
}

小部件.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

最佳答案

您正在访问新初始化实例 tmpm_replyStr,它没有在其 m_replyStr 中设置任何内容。因此它具有“空字符串”的默认初始化值。

编辑

根据你的后续问题,也许你正在寻找这样的东西?

class MyClass;

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(MyClass &myClassInstance, QWidget *parent = 0);
~Widget();

private slots:
void on_pushButton_clicked();

private:
Ui::Widget *ui;
MyClass *myClass;
};

Widget::Widget(MyClass &myClassInstance, QWidget *parent = 0)
: QWidget(parent)
, ui(new Ui::Widget)
, myClass(&myClassInstance)
{
ui->setupUi(this);
}

void Widget::on_pushButton_clicked()
{
int myNumber = myClass->m_replyStr.toInt();
ui->lcdNumber->display(myNumber);
}

关于c++ - 从另一个类转换 QString 时 QString::toInt() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17219520/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com