⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2004-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include <QtNetwork>#include "client.h"Client::Client(QWidget *parent)    : QDialog(parent){    hostLabel = new QLabel(tr("&Server name:"));    portLabel = new QLabel(tr("S&erver port:"));    hostLineEdit = new QLineEdit("Localhost");    portLineEdit = new QLineEdit;    portLineEdit->setValidator(new QIntValidator(1, 65535, this));    hostLabel->setBuddy(hostLineEdit);    portLabel->setBuddy(portLineEdit);    statusLabel = new QLabel(tr("This examples requires that you run the "                                "Fortune Server example as well."));    getFortuneButton = new QPushButton(tr("Get Fortune"));    getFortuneButton->setDefault(true);    getFortuneButton->setEnabled(false);    quitButton = new QPushButton(tr("Quit"));    tcpSocket = new QTcpSocket(this);    connect(hostLineEdit, SIGNAL(textChanged(const QString &)),            this, SLOT(enableGetFortuneButton()));    connect(portLineEdit, SIGNAL(textChanged(const QString &)),            this, SLOT(enableGetFortuneButton()));    connect(getFortuneButton, SIGNAL(clicked()),            this, SLOT(requestNewFortune()));    connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));    connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readFortune()));    connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(displayError(QAbstractSocket::SocketError)));    QHBoxLayout *buttonLayout = new QHBoxLayout;    buttonLayout->addStretch(1);    buttonLayout->addWidget(getFortuneButton);    buttonLayout->addWidget(quitButton);    QGridLayout *mainLayout = new QGridLayout;    mainLayout->addWidget(hostLabel, 0, 0);    mainLayout->addWidget(hostLineEdit, 0, 1);    mainLayout->addWidget(portLabel, 1, 0);    mainLayout->addWidget(portLineEdit, 1, 1);    mainLayout->addWidget(statusLabel, 2, 0, 1, 2);    mainLayout->addLayout(buttonLayout, 3, 0, 1, 2);    setLayout(mainLayout);    setWindowTitle(tr("Fortune Client"));    portLineEdit->setFocus();}void Client::requestNewFortune(){    getFortuneButton->setEnabled(false);    blockSize = 0;    tcpSocket->abort();    tcpSocket->connectToHost(hostLineEdit->text(),                             portLineEdit->text().toInt());}void Client::readFortune(){    QDataStream in(tcpSocket);    in.setVersion(QDataStream::Qt_4_0);    if (blockSize == 0) {        if (tcpSocket->bytesAvailable() < (int)sizeof(quint16))            return;        in >> blockSize;    }    if (tcpSocket->bytesAvailable() < blockSize)        return;    QString nextFortune;    in >> nextFortune;    if (nextFortune == currentFortune) {        QTimer::singleShot(0, this, SLOT(requestNewFortune()));        return;    }    currentFortune = nextFortune;    statusLabel->setText(currentFortune);    getFortuneButton->setEnabled(true);}void Client::displayError(QAbstractSocket::SocketError socketError){    switch (socketError) {    case QAbstractSocket::RemoteHostClosedError:        break;    case QAbstractSocket::HostNotFoundError:        QMessageBox::information(this, tr("Fortune Client"),                                 tr("The host was not found. Please check the "                                    "host name and port settings."));        break;    case QAbstractSocket::ConnectionRefusedError:        QMessageBox::information(this, tr("Fortune Client"),                                 tr("The connection was refused by the peer. "                                    "Make sure the fortune server is running, "                                    "and check that the host name and port "                                    "settings are correct."));        break;    default:        QMessageBox::information(this, tr("Fortune Client"),                                 tr("The following error occurred: %1.")                                 .arg(tcpSocket->errorString()));    }    getFortuneButton->setEnabled(true);}void Client::enableGetFortuneButton(){    getFortuneButton->setEnabled(!hostLineEdit->text().isEmpty()                                 && !portLineEdit->text().isEmpty());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -