| 135 | } |
| 136 | |
| 137 | void NetworkGame::initUI() |
| 138 | { |
| 139 | auto& ui = ChessBoard::ui; |
| 140 | const QString preservedIp = currentIpText(); |
| 141 | const int preservedPort = ui->sbPort->value(); |
| 142 | |
| 143 | if(m_bIsTcpServer) { //作为服务器端 |
| 144 | ui->networkGroup->setTitle("服务器-红方的IP和Port"); |
| 145 | ui->btnTcpConnect->setText("监听"); |
| 146 | const QList<IpCandidate> candidates = collectIpCandidates(); |
| 147 | QStringList ipList; |
| 148 | std::transform(candidates.cbegin(), candidates.cend(), std::back_inserter(ipList), [](const IpCandidate& c){ return c.ip; }); |
| 149 | populateLocalIpChoices(ipList, ipList.isEmpty() ? QStringLiteral("127.0.0.1") : ipList.first()); |
| 150 | ui->comboIp->setEditable(false); |
| 151 | ui->comboIp->setEnabled(true); |
| 152 | ui->comboIp->setStyleSheet(QString()); |
| 153 | { |
| 154 | QSignalBlocker blocker(ui->sbPort); |
| 155 | ui->sbPort->setValue(preservedPort); |
| 156 | } |
| 157 | } else { |
| 158 | ui->networkGroup->setTitle("请输入[服务器]的IP和Port"); |
| 159 | ui->btnTcpConnect->setText("连接"); |
| 160 | ui->btnTcpConnect->show(); |
| 161 | ui->comboIp->clear(); |
| 162 | ui->comboIp->setEditable(true); |
| 163 | ui->comboIp->setEnabled(true); |
| 164 | ui->comboIp->setStyleSheet(QStringLiteral( |
| 165 | "QComboBox::drop-down { width: 0px; border: none; }\n" |
| 166 | "QComboBox::down-arrow { image: none; }" |
| 167 | )); |
| 168 | ui->comboIp->setEditText(preservedIp); |
| 169 | { |
| 170 | QSignalBlocker blocker(ui->sbPort); |
| 171 | ui->sbPort->setValue(preservedPort); |
| 172 | } |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | void NetworkGame::clickPieces(int checkedID, int &row, int &col) |
| 177 | { |
nothing calls this directly
no test coverage detected