#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QThread>namespace Ui { class Dialog; class MyThread;}class MyThread : public QThread{ Q_OBJECTprotected: void run();public: explicit MyThread(QWidget *parent = 0); QString get();private: Ui::Dialog *ui;};class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QWidget *parent = 0); ~Dialog();private: Ui::Dialog *ui;};#endif // DIALOG_H
#include "dialog.h"#include "ui_dialog.h"#include <QtNetwork>Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this);}void MyThread::run(){ ui->setupUi(Dialog); QString str = get(); if(str=="")ui->label->setText("Не определено"); else ui->label->setText(str);} QString MyThread::get() { QString strIP = "Передалось"; return strIP; }Dialog::~Dialog(){ delete ui;}
connect(mythread, SIGNAL(messaga()), this, SLOT(setMessageToLabel()));
C++ (Qt)Dialog::Dialog(QWidget *p) : QDialog(p){ nm = new QNetworkAccessManager(this); reply = nm->get(...); connect(reply, SIGNAL(finished()), this, SLOT(slotFinished()));} void Dialog::slotFinished(){ // обработка ошибок и дальнейшие действия}
#include "dialog.h"#include "ui_dialog.h"#include <QtNetwork>QString strIP;Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); //______________________Определяем внешний IP через Инет________________________________________________ nm = new QNetworkAccessManager(this); reply = nm->get( QNetworkRequest( QUrl( "http://www.grio.ru/myip.php" ) ) ); connect(reply, SIGNAL(finished()), this, SLOT(slotFinished()));}void Dialog::slotFinished(){ ui->setupUi(this); QEventLoop loop; QObject::connect( reply, SIGNAL( finished() ), &loop, SLOT( quit() ) ); loop.exec(); // Проверяем состояние ответа if( reply->error() != QNetworkReply::NoError ) strIP=""; // Ошибка - возвращаем пустую строку // Читаем полученные данные в data QByteArray data = reply->readAll(); // Разбираем полученные данные, находим свой ip и возвращаем его strIP = QString(data); if(strIP=="")ui->label->setText(QObject::tr("Не определено")); else ui->label->setText(strIP);} //___________________________Конец определения внешннего IP________________________________________________Dialog::~Dialog(){ delete ui;}