Utilisation de Qt pour implémenter l'algorithme QM afin de simplifier les expressions logiques et les méthodes de packaging et de publication de projet Qt

 Cet article fournit principalement une méthode de simplification des expressions logiques basée sur l'algorithme QM, et utilise Qt pour réaliser l'interface d'opération graphique !

En même temps, il fournit également les méthodes de publication et de packaging des projets Qt !

Rendu : saisissez l'expression du terme minimum et affichez l'expression logique simplifiée !

  • Fonction : entrez l'algèbre de l'expression du terme minimum, le nombre de variables logiques, le nombre de termes minimum et sortez l'expression logique simplifiée
  • message d'erreur de saisie

  •  Entrez le nombre minimum d'éléments à afficher en temps réel, et remplissez-le une fois

  • Entrée et sortie claires en un clic

1. Code de base de Qt

connect(ui->pushButton,&QPushButton::clicked,this,[=](){
       QString inputStr = ui->textEdit_inputMin->toPlainText();

       if(ui->textEdit_inputMin->document()->isEmpty()){
           QMessageBox::critical(this,"错误","请输入最小项表达式!");
           return;
       }

       if(ui->lineEdit_minNum->text().isEmpty()){
           QMessageBox::critical(this,"错误","请输入最小项表达式个数!");
           return;
       }

       if(ui->lineEdit_varNum->text().isEmpty()){
           QMessageBox::critical(this,"错误","请输入逻辑式变量个数!");
           return;
       }

       QStringList inputList = inputStr.split(',');


       int varNum = ui->lineEdit_varNum->text().toInt();
       int minNum = ui->lineEdit_minNum->text().toInt();

       // 清空之前的设置
       tab.initVarl_Clear();

       tab.initialise(varNum,minNum, inputList);
       tab.setPrimeImp();
       tab.minimise();
       tab.displayFunctions();

       tab.displayString.chop(2);       // 删除最后两个字符

       ui->textEdit_resultShow->setText(tab.displayString);

   });

   // 清空输入的最小项
   connect(ui->pushButton_clearnMin,&QPushButton::clicked,this,[=](){
       ui->textEdit_inputMin->clear();
   });

   // 清空输出的化简结果
   connect(ui->pushButton_clearnResult,&QPushButton::clicked,this,[=](){
       ui->textEdit_resultShow->clear();
       tab.displayString.clear();
   });

   // 实时显示实际输入最小项的个数
   connect(ui->textEdit_inputMin, &QTextEdit::textChanged,this,[=](){
       QString inputStr_actual = ui->textEdit_inputMin->toPlainText();

       QStringList inputList_actual = inputStr_actual.split(',');
       int minNum_Actual = inputList_actual.count();
       ui->lineEdit_minNumActual->setText(QString::number(minNum_Actual));
   });

   // 填入最小项
   connect(ui->pushButton_fillInMinLineEdit,&QPushButton::clicked,this,[=](){
        QString inpuMinNum_actual = ui->lineEdit_minNumActual->text();
        ui->lineEdit_minNum->setText(inpuMinNum_actual);
   });
  •  Transmettez principalement les paramètres à l'algorithme QM via l'interface utilisateur et effectuez les opérations associées via le bouton.
  • Utilisez la fonction tab.initVarl_Clear(); pour résoudre le bogue selon lequel l'algorithme d'origine ne peut s'exécuter qu'une seule fois

2. Notes relatives à Qt

  • Déterminer si textEdit est vide
ui->textEdit_inputMin->document()->isEmpty()
  • Convertir le type chaîne en type QString
string dataStr;

QString str = QString::fromStdString(dataStr);
  • type int en type QString
int i;
QString::number(i);
  •  Concaténer une nouvelle chaîne après la chaîne QString
QString displayString;
displayString.append("\n化简后所有可能的逻辑表达式为:\n");
  • La chaîne QString supprime n caractères de l'arrière vers l'avant
 tab.displayString.chop(n);
  • boîte de message d'erreur
QMessageBox::critical(this,"错误","请输入最小项表达式!");

3 Libération de l'emballage et précautions

3.1 Lancement du projet

(1) Sélectionnez le projet correspondant, build kit (Kit), Release

 

(2) Trouvez le dossier bu-xxx-Desktop_Qt_5_12_2_MinGW_32_bit-Release dans le même répertoire que le fichier projet

 (3) Recherchez le fichier exécutable compilé dans le dossier de publication de ce répertoire

(4) Copiez le fichier xx.exe dans un nouveau dossier

 

 (5) Appuyez sur la touche Win pour trouver la boîte de commande correspondant au Kit de compilation ci-dessus

 Remarque : Il doit être le même que le kit de construction (Kit) sélectionné lors de la compilation, sinon il ne fonctionnera pas , voici tous les MinGW 32bit

(6) Ouvrez la boîte de commande dans (5), puis cd vers le chemin du fichier de (4)

 (7) Générez des fichiers de dépendance avec la commande windeployqt

Format : windeployqt xxx.exe

 Générez enfin les fichiers de dépendance pertinents

 3.2 Emballé dans un fichier xx.exe

Cette étape consiste principalement à regrouper le fichier xx.exe généré et les dépendances associées dans un fichier XXX.exe complet.

(1) Téléchargez et installez Enigma Virtual Box 

Adresse de téléchargement : Protection des logiciels, Licences de logiciels, Virtualisation des logiciels (enigmaprotector.com)

(2) Ouvrez Enigma Virtual Box pour la configuration associée

Sélectionnez le fichier de package et définissez le chemin et le nom du fichier de sortie

 Ajoutez les dépendances associées et générez l'intégralité du fichier xx.exe

 4 Code source du projet et fichier .exe

 peut être exécuté directement,

Programme exécutable du projet et adresse de téléchargement du code source :

Qt implémente l'interface d'opération graphique de l'algorithme QM (y compris les programmes exécutables et le code source) - QT Documentation Resources - CSDN Library

Algorithme de référence de l'algorithme QM

mohdomama/Quine-McCluskey : Une implémentation Python/C++ de la méthode Quine McCluskey(Tabulation). (github.com)

Je suppose que tu aimes

Origine blog.csdn.net/jac_chao/article/details/124069529
conseillé
Classement