代码之家  ›  专栏  ›  技术社区  ›  Tobias Langner

关于连接的新手qt问题

  •  6
  • Tobias Langner  · 技术社区  · 15 年前

    我刚刚尝试设置一个小的qt示例,但connect语句未能编译。 来自编译器的错误消息是:“没有用于调用‘mainwindow::connect(…’)的匹配函数。”

    我做错什么了她?

    谢谢你的帮助。

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QNetworkAccessManager>
    #include <QNetworkReply>
    
    namespace Ui {
        class MainWindow;
    }
    
    class MainWindow : public QMainWindow {
        Q_OBJECT
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    protected:
        void changeEvent(QEvent *e);
    
    private:
        Ui::MainWindow *ui;
        QNetworkAccessManager networkManager;
    
    private slots:
        void on_requestButton_clicked();
        void on_authenticationRequired(QNetworkReply* reply, QAuthenticator* auth);
        void on_finished(QNetworkReply* reply);
    };
    
    #endif // MAINWINDOW_H
    

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    void MainWindow::on_requestButton_clicked()
    {
    
    }
    
    void MainWindow::on_authenticationRequired(QNetworkReply* reply, QAuthenticator* auth)
    {
    
    }
    
    void MainWindow::on_finished(QNetworkReply* reply)
    {
    
    }
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow), networkManager(this)
    {
        ui->setupUi(this);
        connect(networkManager, SIGNAL(finished(QNetworkReply*)),
                this, SLOT(on_finished(QNetworkReply*)));
        connect(networkManager,SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
                this, SLOT(on_authenticationRequired(QNetworkReply*,QAuthenticator*)));
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::changeEvent(QEvent *e)
    {
        QMainWindow::changeEvent(e);
        switch (e->type()) {
        case QEvent::LanguageChange:
            ui->retranslateUi(this);
            break;
        default:
            break;
        }
    }
    
    1 回复  |  直到 15 年前
        1
  •  8
  •   mtvec    15 年前

    QObject::Connect需要指向QObject的指针,您正在将NetworkManager作为普通变量传递。只需将connect(networkmanager…)更改为connect(networkmanager…)即可。