开发环境:Qt: 5.9.7 MacOS: 10.13.6
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void InitConnect();
int VersionCompare(const QString &strVer1, const QString &strVer2);
public slots:
void SlotVersionCompare();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QList>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
InitConnect();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::InitConnect()
{
connect(ui->pushButton_Compare, SIGNAL(clicked()), this, SLOT(SlotVersionCompare()));
}
int MainWindow::VersionCompare(const QString &strVer1, const QString &strVer2)
{
if(!strVer1.compare(strVer2))
{
return 0;
}
QStringList verList1 = strVer1.split(".");
QStringList verList2 = strVer2.split(".");
int listCount1 = verList1.count();
int listCount2 = verList2.count();
int nCount = listCount1 > listCount2 ? listCount2 : listCount1;
for(int i = 0; i < nCount; ++i)
{
bool bOK1 = false;//判断是否转换成成功
bool bOK2 = false;
int num1 = verList1[i].toInt(&bOK1);
int num2 = verList2[i].toInt(&bOK2);
if(!bOK1 || !bOK2)//转换失败返回0
{
return -2;
}
if(num1 == num2)
{
continue;
}
if(num1 > num2)
{
return 1;
}
else
{
return -1;
}
}
return 0;
}
void MainWindow::SlotVersionCompare()
{
QString strVer1 = ui->lineEdit_Ver1->text();
QString strVer2 = ui->lineEdit_Ver2->text();
int nResult = VersionCompare(strVer1, strVer2);
QString strResult = tr("result: ");
switch (nResult)
{
case -2:
strResult = QString("版本号格式错误");
break;
case -1:
strResult += QString("%1 小于 %2").arg(strVer1).arg(strVer2);
break;
case 0:
strResult += QString("%1 等于 %2").arg(strVer1).arg(strVer2);
break;
case 1:
strResult += QString("%1 大于 %2").arg(strVer1).arg(strVer2);
break;
default:
break;
}
ui->label_Result->setText(strResult);
}
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
结果: