需求
Qt 需要检查配置文件中的内容,如果有问题,就退出程序
解决
一般检查配置文件,是在构造函数环节,这个时候普通的退出是不行的。只能使用 QTimer
然后连接 qApp->quit()
来退出。
QSettings* configIni = new QSettings(file_path, QSettings::IniFormat, this);
server_ip_ = configIni->value("ip", "192.168.1.100").toString();
server_port_ = configIni->value("port", "6666").toInt();
if (CheckServerIpAndPort(server_ip_, server_port_) == false) {
QTimer *myTimer = new QTimer();
myTimer->start(10);
connect(myTimer, &QTimer::timeout, this, [=](){this->close(); qApp->quit();});
}
configIni->endGroup();
bool MainWindow::CheckServerIpAndPort(const QString &ip, uint16_t port)
{
QStringList list = ip.split('.');
if (list.size() != 4) {
QMessageBox::critical(this, "IP格式错误", "请重新配置IP");
return false;
}
for (auto& s : list) {
int address = s.toInt();
if (address < 0 || address > 255) {
QMessageBox::critical(this, "IP数值错误", "请重新配置IP");
return false;
}
}
if (port < 1024) {
QMessageBox::critical(this, "端口号错误", "请重新配置端口,端口号需要 > 1024");
return false;
}
return true;
}