【发布时间】:2021-06-17 19:58:41
【问题描述】:
我在 mainWindow 类中有一个 get_curl() 方法。我想将此方法移动到一个单独的类中,以便可以从程序的任何部分使用它。我试图这样做,但没有任何效果。我知道问题出在我在 Utils 类中使用的 connect () 中。我需要我可以从我的 Utils 类调用相同的方法 get_curl () 的方法
我删除了我的一些代码
MainWindow.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_MainWindow.h"
#include <qstackedwidget.h>
#include <qstatusbar.h>
#include <qstring.h>
#include <qdebug.h>
#include <qtextcodec.h>
#include <qvariant.h>
#include <QtNetwork/qnetworkaccessmanager.h>
#include <QtNetwork/qnetworkrequest.h>
#include <QtNetwork/qnetworkreply.h>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = Q_NULLPTR);
private:
Ui::MainWindowClass ui;
QNetworkAccessManager* manager;
QNetworkRequest request;
QNetworkReply* reply;
QString contents;
QString err;
void get_curl();
void set_btn_clicks();
private slots:
void on_btn();
void on_btnRmouteClicked();
void slott(QNetworkReply*);
};
MainWindow.cpp
#include "MainWindow.h"
#include "Utils.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
ui.setupUi(this);
set_btn_clicks();
}
void MainWindow::set_btn_clicks()
{
connect(ui.btnRemoute, SIGNAL(clicked()), this, SLOT(on_btnRmouteClicked()));
}//MENU BTN CLICKS
#pragma region Engine
void MainWindow::get_curl()
{
manager = new QNetworkAccessManager();
request.setUrl(QUrl("https://auth.pentagon.com/api/client/account"));
request.setRawHeader("Accept", "application/json");
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
request.setRawHeader("Authorization", "Bearer xxx");
reply = manager->get(request);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slott(QNetworkReply*)));
}
void MainWindow::slott(QNetworkReply*)
{
if (reply->error() == QNetworkReply::NoError)
{
contents = QString::fromUtf8(reply->readAll());
qDebug() << contents;
}
else
{
err = reply->errorString();
qDebug() << err;
}
}
#pragma endregion
#pragma region BtnClicks
void MainWindow::on_btn()
{
get_curl();
}
void MainWindow::on_btnRmouteClicked()
{
get_curl();
Utils u;
u.print_curl();
ui.stackedWidget->setCurrentWidget(ui.pageRemoute);
}
#pragma endregion
【问题讨论】:
-
你的问题不清楚
-
您能否重新表述您的问题,现在您的问题不清楚?
-
不相关:SIGNAL 和 SLOT 语法不是首选的绑定方法。您应该改用 Qt5 风格的连接。
-
这能回答你的问题吗? waiting for a signal