Приложение Trip Planner содержит поле From (из пункта), поле To (до пункта), поле Date (дата), поле Approximate Time (приблизительное время) и два переключателя, определяющие приблизительное время отправления или прибытия. Когда пользователь нажимает клавишу Search, приложение посылает запрос на сервер, который возвращает список железнодорожных рейсов, которые удовлетворяют критериям пользователя. Этот список отображается в виджете
Пользовательский интерфейс приложения Trip Planner был создан при помощи
#include "ui_tripplanner.h"
01 class TripPlanner : public QDialog, public Ui::TripPlanner
02 {
03 Q_OBJECT
04 public:
05 TripPlanner(QWidget *parent = 0);
06 private slots:
07 void connectToServer();
08 void sendRequest();
09 void updateTableWidget();
10 void stopSearch();
11 void connectionClosedByServer();
12 void error();
13 private:
14 void closeConnection();
15 QTcpSocket tcpSocket;
16 quint16 nextBlockSize;
17 };
Класс
01 TripPlanner::TripPlanner(QWidget *parent)
02 : QDialog(parent)
03 {
04 setupUi(this);
05 QDateTime dateTime = QDateTime::currentDateTime();
06 dateEdit->setDate(dateTime.date());
07 timeEdit->setTime(QTime(dateTime.time().hour(), 0));
08 progressBar->hide();
09 progressBar->setSizePolicy(QSizePolicy::Preferred,
10 QSizePolicy::Ignored);
11 tableWidget->verticalHeader()->hide();
12 tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
13 connect(searchButton, SIGNAL(clicked()),
14 this, SLOT(connectToServer()));
15 connect(stopButton, SIGNAL(clicked()), this, SLOT(stopSearch()));
16 connect(&tcpSocket, SIGNAL(connected()),
17 this, SLOT(sendRequest()));
18 connect(&tcpSocket, SIGNAL(disconnected()),
19 this, SLOT(connectionClosedByServer()));
20 connect(&tcpSocket, SIGNAL(readyRead()),
21 this, SLOT(updateTableWidget()));
22 connect(&tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
23 this, SLOT(error()));
24 }
В конструкторе мы инициализируем поля редактирования даты и времени текущей датой и временем. Мы также не показываем индикатор состояния программы, потому что он необходим только при активном соединении. В
В конструкторе мы также связываем сигналы