C++ 如何将长函数移出主窗口(QT)

C++ 如何将长函数移出主窗口(QT),c++,qt,refactoring,C++,Qt,Refactoring,我正在用QT编写一个G代码后处理器。该应用程序基本上让用户选择一个要处理的文件,选择一些参数,然后解析该文件并对其进行一些操作 现在,当用户决定保存新编辑的文件时,我将所有操作作为一个函数调用 void MainWindow::on_writeGcodeButton_clicked() { writeGcode(); } void MainWindow::writeGcode(){ <Get a bunch of info from the ui> <

我正在用QT编写一个G代码后处理器。该应用程序基本上让用户选择一个要处理的文件,选择一些参数,然后解析该文件并对其进行一些操作

现在,当用户决定保存新编辑的文件时,我将所有操作作为一个函数调用

void MainWindow::on_writeGcodeButton_clicked()
{
    writeGcode();
}

void MainWindow::writeGcode(){
    <Get a bunch of info from  the ui>
    <Search through a file and manipulate it>
    <Output result>
}
  • 创建一个新的解析器类,并实例化它。(我觉得这不是个好主意……)

  • 就这样吧,没问题
  • 还有什么我没想到的

  • 一个好主意是创建一个结构并将其命名为“Parameters”,它将包含一个变量,用于从ui设置的每个参数。您将在mainwindow类中创建参数的实例,并在单击“确定”或用户(例如)按下按钮时设置其值。一个好的建议是为您的结构设置一些默认参数。 在此之后,创建一个类并将其命名为“Parser”,该类的构造函数参数为文件的完整文件路径以及“parameters”对象的引用。在这个类中创建与搜索或操作有关的方法。 最后,(假设您的输出显示在mainwindow.ui上),您可以发出信号,这些信号将被监听,以便在mainwindow的控件上显示您的输出信息。 最后,您必须只在mainwindow.cpp内有:

  • 创建“参数”和“解析器”对象
  • 侦听用户操作的插槽(和连接)
  • 侦听从“解析器”发出的信号以在mainwindow.ui上显示输出的插槽(和连接)

  • 实际上,有很多方法可以选择重构代码(您可以看看MVC模式)。要找到最好的方法,需要经验,研究设计模式,最重要的是考虑应用程序的需求,使其在将来易于扩展的需求,以及拥有不受影响的封闭代码块的能力。我们将在将来进行添加。这只是我的方法。祝你好运,如果你需要的话,我很乐意再次帮助你。

    @Memnarch1113:如果这个答案回答了你的问题,请把它标记为正确,以便结束这个问题。
    //gcodeParser.cpp
    public static void writeGcode(String a, String b, String c ....) {
        //Search through file, manipulate, output result
    }