Класс
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 }
В конструкторе мы инициализируем поля редактирования даты и времени текущей датой и временем. Мы также не показываем индикатор состояния программы, потому что он необходим только при активном соединении. В
В конструкторе мы также связываем сигналы
01 void TripPlanner::connectToServer
02 {
03 tcpSocket.connectToHost("tripserver.zugbahn.de", 6178);
04 tableWidget->setRowCount(0);
05 searchButton->setEnabled(false);
06 stopButton->setEnabled(true);
07 statusLabel->setText(tr("Connecting to server..."));
08 progressBar->show;
09 nextBlockSize = 0;
10 }
Слот
Затем мы обновляем интерфейс пользователя, в частности делаем видимым индикатор состояния приложения.
Наконец, мы устанавливаем переменную
01 void TripPlanner::sendRequest
02 {
03 QByteArray block;