Chinaunix首页 | 论坛 | 博客
  • 博客访问: 534665
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 159
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-13 12:37
个人简介

aaaaaaaaa

文章分类

全部博文(71)

文章存档

2013年(71)

我的朋友

分类: 嵌入式

2013-07-24 17:11:53





Overview

This artcile will help the developer to write an Qt program which performs the action of HTTP Get and Post. These two terms are very important when an web based application needs to be developed.

This is a very basic article this can be extended to suite the developers need.

Prerequisite

Note.png
Note: 
  • This code snippet is developed using carbide C++ v2.4.
  • One can use Qt creator for developing this sort of application please go through this artcile for more details.


capability required

  • NetworkServices

UI design (.ui file)

The below screenshot shows the ui design file.

QtGetPost3.JPG

Header File

#ifndef MAINWINDOW_H #define MAINWINDOW_H   #include  #include  #include  #include  #include  
  namespace Ui { class MainWindow; }   class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow();   protected: void changeEvent(QEvent *e);   private slots: void finished(QNetworkReply *reply); void DoHttpGet(); void activateGetWidgets(); void HideWidgets(); void clearWidgets(); void activatePostWidgets();   private: Ui::MainWindow *ui;  
    QNetworkAccessManager *nam; };   #endif // MAINWINDOW_H

Source File

#include "mainwindow.h" #include "ui_mainwindow.h"  
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
    ui(new Ui::MainWindow) { ui->setupUi(this);  
    nam = new QNetworkAccessManager(this); HideWidgets(); connect(ui->getButton,SIGNAL(clicked()),this,SLOT(activateGetWidgets())); connect(ui->submitButton,SIGNAL(clicked()),this,SLOT(DoHttpGet())); connect(ui->resetButton,SIGNAL(clicked()),this,SLOT(clearWidgets())); connect(nam,SIGNAL(finished(QNetworkReply*)),this,SLOT(finished(QNetworkReply*))); connect(ui->postButton,SIGNAL(clicked()),this,SLOT(activatePostWidgets())); }  
MainWindow::~MainWindow() { delete ui; }   void MainWindow::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } }   void MainWindow::activateGetWidgets() { ui->urlLabel->setHidden(false); ui->urlLine->setHidden(false); ui->submitButton->setHidden(false); ui->textBrowser->setHidden(false); ui->responseTitleLabel->setHidden(false); ui->getButton->setHidden(true); ui->postButton->setHidden(true);   }   void MainWindow::activatePostWidgets() { ui->dataLabel->setHidden(false); ui->dataLine->setHidden(false); activateGetWidgets();   }  
 
  void MainWindow::finished(QNetworkReply *reply) { if(reply->error() == QNetworkReply::NoError) { ui->textBrowser->setText(reply->readAll());   } else { ui->textBrowser->setText(reply->errorString()); } }   void MainWindow::DoHttpGet() { ui->resetButton->setHidden(false); QString url = ui->urlLine->text(); QString data = ui->dataLine->text(); QByteArray postData; postData.append(data.toAscii()); if(postData.isEmpty() == true) { nam->get(QNetworkRequest(QUrl(url))); } else { nam->post(QNetworkRequest(QUrl(url)),postData); }   }   void MainWindow::HideWidgets() { ui->urlLabel->setHidden(true); ui->urlLine->setHidden(true); ui->dataLabel->setHidden(true); ui->dataLine->setHidden(true); ui->submitButton->setHidden(true); ui->responseTitleLabel->setHidden(true); ui->textBrowser->setHidden(true); ui->resetButton->setHidden(true);   }   void MainWindow::clearWidgets() { ui->urlLabel->setHidden(true); ui->urlLine->setHidden(true); ui->dataLabel->setHidden(true); ui->dataLine->setHidden(true); ui->submitButton->setHidden(true); ui->responseTitleLabel->setHidden(true); ui->textBrowser->setHidden(true); ui->resetButton->setHidden(true); ui->urlLine->clear(); ui->textBrowser->clear(); ui->dataLine->clear(); ui->getButton->setHidden(false); ui->postButton->setHidden(false);   }

Output Screenshots

  • Initial Screen Asking the user to select and http get or post.


QtGetPost1.jpg

  • Screenshot after user has clicked the get button.


QtGetPost2.jpg

  • Screenshot after user has clicked the post button.


QtGetPost4.jpg


Sample Application


Reference Links

QNetworkAccessManager

646 page views in the last 30 days.
阅读(517) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~