Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. French
  4. Problèmes avec QNetworkRequest : undefined reference to `QNetworkRequest::QNetworkRequest()
Forum Updated to NodeBB v4.3 + New Features

Problèmes avec QNetworkRequest : undefined reference to `QNetworkRequest::QNetworkRequest()

Scheduled Pinned Locked Moved Solved French
5 Posts 2 Posters 479 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    Futuray Programming
    wrote on last edited by
    #1

    Salut !
    Je cherche à me connecter à un serveur avec mon programme Qt et mon code sort :

    /.../main/mainwindow.cpp:72: erreur : undefined reference to `QNetworkRequest::QNetworkRequest(QUrl const&)'
    

    Or, j'utilise CMake et sur internet, on ne trouve que des réponses pour les fichiers .pro.
    Merci d'avance pour votre aide !!!

    PS : voici mon code

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QWidget>
    #include <QSpacerItem>
    #include <QLabel>
    #include <QVBoxLayout>
    #include <QLineEdit>
    #include <QPushButton>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
        public:
            MainWindow(QWidget *parent = nullptr);
            ~MainWindow();
    
        public slots:
            void SetNetworksParameters();
    
            void Login();
    
        private:
            Ui::MainWindow *ui;
            QWidget* MainLoginWindowWidget;
            QVBoxLayout* MainLoginWindowLayout;
            QSpacerItem* MainLoginWindowTopSpacer;
            QSpacerItem* MainLoginWindowAfterTitleSpacer;
            QSpacerItem* MainLoginWindowAfterLineEditNameSpacer;
            QSpacerItem* MainLoginWindowAfterLineEditPassCodeSpacer;
            QSpacerItem* MainLoginWindowButtomSpacer;
            QLabel* MainLoginWindowTitleLabel;
            QLineEdit* MainLoginWindowLineEditName;
            QLineEdit* MainLoginWindowLineEditPassCode;
            QPushButton* MainLoginWindowButtonLogin;
    };
    #endif // MAINWINDOW_H
    

    et

    //mainwindow.cpp
    #include "mainwindow.h"
    #include "./ui_mainwindow.h"
    #include <QTextStream>
    #include <QFile>
    #include <QMessageBox>
    
    #include <QtNetwork/QtNetwork>
    #include <QtNetwork/QNetworkReply>
    #include <QtNetwork/QNetworkAccessManager>
    #include <QtNetwork/QNetworkRequest>
    #include <QUrl>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        MainLoginWindowWidget = new QWidget(this);
        MainLoginWindowLayout = new QVBoxLayout(MainLoginWindowWidget);
        MainLoginWindowTopSpacer = new QSpacerItem(160, 100);
        MainLoginWindowAfterTitleSpacer = new QSpacerItem(160, 50);
        MainLoginWindowAfterLineEditNameSpacer = new QSpacerItem(160, 20);
        MainLoginWindowAfterLineEditPassCodeSpacer = new QSpacerItem(160, 20);
        MainLoginWindowButtomSpacer = new QSpacerItem(160, 40);
        MainLoginWindowTitleLabel = new QLabel("Connecte toi :");
        MainLoginWindowLineEditName = new QLineEdit();
        MainLoginWindowLineEditPassCode = new QLineEdit();
        MainLoginWindowButtonLogin = new QPushButton("Se connecter");
    
        MainLoginWindowLayout->setAlignment(Qt::AlignTop);
    
        QFile MainLoginWindowStyleSheetFile(":/styles/mainloginwindow.qss");
        MainLoginWindowStyleSheetFile.open(QIODevice::ReadOnly);
        QTextStream MainLoginWindowStyleSheetTextStream(&MainLoginWindowStyleSheetFile);
        QString MainLoginWindowStyleSheetString = MainLoginWindowStyleSheetTextStream.readAll();
        MainLoginWindowStyleSheetFile.close();
    
        MainLoginWindowWidget->setStyleSheet(MainLoginWindowStyleSheetString);
        MainLoginWindowTitleLabel->setStyleSheet(MainLoginWindowStyleSheetString);
        MainLoginWindowLineEditName->setStyleSheet(MainLoginWindowStyleSheetString);
        MainLoginWindowLineEditPassCode->setStyleSheet(MainLoginWindowStyleSheetString);
        MainLoginWindowButtonLogin->setStyleSheet(MainLoginWindowStyleSheetString);
    
        MainLoginWindowLayout->addSpacerItem(MainLoginWindowTopSpacer);
        MainLoginWindowLayout->addWidget(MainLoginWindowTitleLabel, 0, Qt::AlignHCenter);
        MainLoginWindowLayout->addSpacerItem(MainLoginWindowAfterTitleSpacer);
        MainLoginWindowLayout->addWidget(MainLoginWindowLineEditName, 0, Qt::AlignHCenter);
        MainLoginWindowLayout->addSpacerItem(MainLoginWindowAfterLineEditNameSpacer);
        MainLoginWindowLayout->addWidget(MainLoginWindowLineEditPassCode, 0, Qt::AlignHCenter);
        MainLoginWindowLayout->addSpacerItem(MainLoginWindowAfterLineEditPassCodeSpacer);
        MainLoginWindowLayout->addWidget(MainLoginWindowButtonLogin, 0, Qt::AlignHCenter);
        MainLoginWindowLayout->addSpacerItem(MainLoginWindowButtomSpacer);
    
        connect(MainLoginWindowButtonLogin, SIGNAL(clicked()), this, SLOT(Login()));
    
        this->setCentralWidget(MainLoginWindowWidget);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::SetNetworksParameters() {
        MainLoginWindowButtonLogin->setEnabled(false);
        QFile UrlFile(":/texts/url.txt");
        UrlFile.open(QIODevice::ReadOnly);
        QTextStream UrlTextStream(&UrlFile);
        UrlFile.close();
        QString UrlString = UrlTextStream.readAll();
        const QUrl MainServerUrl = QUrl(UrlString);
        QNetworkRequest MainServerQuery(MainServerUrl);
    
        QNetworkAccessManager *m = new QNetworkAccessManager(this);
        QNetworkReply *r = m->get(MainServerQuery);
        connect(r, SIGNAL(finished()), this, SLOT(Login()));
    }
    
    void MainWindow::Login() {
        QMessageBox::information(this, "OK", "OK !");
    }
    
    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by SGaist
      #4
      target_link_libraries(main PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
      

      Ou alors sur une ligne séparée:

      target_link_libraries(main PRIVATE Qt${QT_VERSION_MAJOR}::Network)
      

      Il y a les exemples pour cmake et qmake au sommet de la documentation des classes comme pour QNetworkRequest.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #2

        Bonsoir,

        Que contient le fichier CMakeLists.txt ?
        Il faut s'assurer que le module network est dans la liste des dépendances de l'application.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        1
        • F Offline
          F Offline
          Futuray Programming
          wrote on last edited by
          #3

          Non, il n'y est pas, j'utilise le code pré-fait et y ajoute juste les fichiers dont j'ai besoin.

          cmake_minimum_required(VERSION 3.5)
          
          project(main VERSION 0.1 LANGUAGES CXX)
          
          set(CMAKE_INCLUDE_CURRENT_DIR ON)
          
          set(CMAKE_AUTOUIC ON)
          set(CMAKE_AUTOMOC ON)
          set(CMAKE_AUTORCC ON)
          
          set(CMAKE_CXX_STANDARD 17)
          set(CMAKE_CXX_STANDARD_REQUIRED ON)
          
          find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
          find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
          find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Network)
          
          set(PROJECT_SOURCES
                  main.cpp
                  mainwindow.cpp
                  mainwindow.h
                  mainwindow.ui
                  files.qrc
          )
          
          if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
              qt_add_executable(main
                  MANUAL_FINALIZATION
                  ${PROJECT_SOURCES}
              )
          # Define target properties for Android with Qt 6 as:
          #    set_property(TARGET main APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
          #                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
          # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
          else()
              if(ANDROID)
                  add_library(main SHARED
                      ${PROJECT_SOURCES}
                  )
          # Define properties for Android with Qt 5 after find_package() calls as:
          #    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
              else()
                  add_executable(main
                      ${PROJECT_SOURCES}
                  )
              endif()
          endif()
          
          target_link_libraries(main PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
          
          set_target_properties(main PROPERTIES
              MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
              MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
              MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
              MACOSX_BUNDLE TRUE
              WIN32_EXECUTABLE TRUE
          )
          
          install(TARGETS main
              BUNDLE DESTINATION .
              LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
          
          if(QT_VERSION_MAJOR EQUAL 6)
              qt_finalize_executable(main)
          endif()
          

          Comment on l'ajoute ?

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by SGaist
            #4
            target_link_libraries(main PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network)
            

            Ou alors sur une ligne séparée:

            target_link_libraries(main PRIVATE Qt${QT_VERSION_MAJOR}::Network)
            

            Il y a les exemples pour cmake et qmake au sommet de la documentation des classes comme pour QNetworkRequest.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            1
            • F Offline
              F Offline
              Futuray Programming
              wrote on last edited by
              #5

              A, oui oups...
              Merci !

              1 Reply Last reply
              0

              • Login

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • Users
              • Groups
              • Search
              • Get Qt Extensions
              • Unsolved