QT 创作者 Main.cpp MainWindow.cpp

QT Creator Main.cpp MainWindow.cpp

我目前正在为 Mechatronics/Robotics 中的硕士论文做项目。 y 项目的目标是读取 .stl 文件并计算工业机器人的路径。

到目前为止一切正常,但现在我的教授要我开发一个 GUI,因为到目前为止我只是使用命令 window 并手动编写所有参数。现在我正在使用 Qt Creator 并为我的项目开发一个简单的 GUI。

在这个界面中,我得到了一个用于 ascii 文件的 RadioButton。为了让我的函数正常工作,我必须确定用户输入的是 ascii 文件还是二进制文件。但这是我的第一个问题。在命令 window 中,我只检查 argv[] 中的字符串 "-ascii"。如果用户输入此内容,则标志设置为 false。

if(0 == strcmp(argv[i], "-ascii")) {
    isBinaryFormat = false;
}

现在我只想在 GUI 中做同样的事情。如果 RadioButton 被选中,则标志设置为 false。所以我在 main.cpp 文件

中写了以下内容
if(ui->radioButton->isChecked()) {
    isBinaryFormat = false;
}

但是ui在主函数中是未知的。在 google 上搜索帮助后,我发现在 mainwindow.cpp 文件中编写代码的教程。但是我怎样才能将信息从 mainwindow 文件发送到我在 main.cpp 文件中的主要函数。

第二个问题是,如果我使用 QFileDialog::getOpenFilename 方法,我如何将文件名传递给我的其他函数。这个想法是,用户在他的 PC 上的任何地方选择一个文件,然后程序打开该文件并对其进行处理。但在这里我遇到了同样的问题。我可以浏览文件,但如何将信息从 mainwindow.cpp 传输到我的 main.cpp.

我很感谢我得到的任何帮助。非常感谢一个孤独的coder

不仅仅是文件,还有 class。了解他们。解决方案是在 MainWindow class 中添加一个 getter,这将 return 是否选中 radioButton

class MainWindow : public QMainWindow
{
    public:
        // optionally, move implementation in the source file
        bool isBinaryFormatChecked() const
        {
            return ui->radioButton->isChecked();
        }

    // other stuff ...
};

然后您可以在 main 中访问它,例如 window.isBinaryFormatChecked()
window->isBinaryFormatChecked(),具体取决于您是否有指针。另一种方法是在 MainWindow public 中创建 ui,这样您就可以访问整个用户界面,但这会破坏适当的封装。

首先你不要在main.cpp中写UI代码。 你把它写在 MainWindow Class 在 MainWindow.cppMainWindow.h.

中的位置

那么你的 ui-> 就会工作,因为它可以访问那个命名空间。

我不明白你为什么要在 Main.cpp 中使用函数? 如果不查看更多代码,您不太可能得到答案。

如果您想在 classes 中使用外部函数,请直接在 class 中声明方法,或者创建一个新文件,例如 global_function.h.cpp您可以在 class 中加入。 (别忘了头球后卫)

另外,代码不应该像这样:

if(!ui->radioButton->isChecked())
{
    isBinaryFormat = false;
}

因为:

If the RadioButton is checked flag is set to false.


QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                "/home",
                                                tr("Images (*.png *.xpm *.jpg)"));

getOpenFileName( ) 将 return 包含所选文件的路径和文件名的字符串,然后您可以将其传递给您的函数。

请阅读更多有关如何使用 Qt 的内容。

我认为在尝试集成您已经工作的控制台代码之前,您需要通过 Qt 提供的一些(我认为非常好的)示例。

本质上你真的不想在 main.cpp 中进行检查,但如果你必须这样做,你可以在主窗口的 public 函数中进行检查并从你的 main.cpp 文件。 但是 那么这实际上没有意义,因为您不想在用户输入某些内容之前检查是否设置了适当的单选按钮。您将不得不阅读基于事件的编程。