📄 blockingclient.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 "blockingclient.h"BlockingClient::BlockingClient(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")); 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(&thread, SIGNAL(newFortune(const QString &)), this, SLOT(showFortune(const QString &))); connect(&thread, SIGNAL(error(int, const QString &)), this, SLOT(displayError(int, const QString &))); 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("Blocking Fortune Client")); portLineEdit->setFocus();}void BlockingClient::requestNewFortune(){ getFortuneButton->setEnabled(false); thread.requestNewFortune(hostLineEdit->text(), portLineEdit->text().toInt());}void BlockingClient::showFortune(const QString &nextFortune){ if (nextFortune == currentFortune) { requestNewFortune(); return; } currentFortune = nextFortune; statusLabel->setText(currentFortune); getFortuneButton->setEnabled(true);}void BlockingClient::displayError(int socketError, const QString &message){ switch (socketError) { case QAbstractSocket::HostNotFoundError: QMessageBox::information(this, tr("Blocking Fortune Client"), tr("The host was not found. Please check the " "host and port settings.")); break; case QAbstractSocket::ConnectionRefusedError: QMessageBox::information(this, tr("Blocking 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("Blocking Fortune Client"), tr("The following error occurred: %1.") .arg(message)); } getFortuneButton->setEnabled(true);}void BlockingClient::enableGetFortuneButton(){ getFortuneButton->setEnabled(!hostLineEdit->text().isEmpty() && !portLineEdit->text().isEmpty());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -