Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QT Creator Main.cpp MainWindow.cpp_C++_Qt_Multiple Instances - Fatal编程技术网

C++ QT Creator Main.cpp MainWindow.cpp

C++ QT Creator Main.cpp MainWindow.cpp,c++,qt,multiple-instances,C++,Qt,Multiple Instances,我目前正在为我的机电一体化/机器人学硕士论文做项目。y项目的目标是读取.stl文件并计算工业机器人的路径 到目前为止,一切都很好,但现在我的教授希望我开发一个GUI,因为到目前为止,我只是使用命令窗口,编写所有参数手册。现在我正在与Qt Creator合作,为我的项目开发了一个简单的GUI 在这个界面中,我得到了一个ascii文件的单选按钮。为了使我的函数工作,我必须确定用户输入的是ascii文件还是二进制文件。但这是我的第一个问题。在命令窗口中,我只需检查argv[]中的字符串“-ascii”

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

到目前为止,一切都很好,但现在我的教授希望我开发一个GUI,因为到目前为止,我只是使用命令窗口,编写所有参数手册。现在我正在与Qt Creator合作,为我的项目开发了一个简单的GUI

在这个界面中,我得到了一个ascii文件的单选按钮。为了使我的函数工作,我必须确定用户输入的是ascii文件还是二进制文件。但这是我的第一个问题。在命令窗口中,我只需检查
argv[]
中的字符串
“-ascii”
。如果用户输入,则标志设置为false

if(0 == strcmp(argv[i], "-ascii")) {
    isBinaryFormat = false;
}
现在我只想在GUI中做同样的事情。如果选中RadioButton,则标志设置为false。因此,我在
main.cpp
文件中编写了以下内容

if(ui->radioButton->isChecked()) {
    isBinaryFormat = false;
}
但是ui在主函数中是未知的。在谷歌上搜索帮助后,我在
mainwindow.cpp
文件中找到了编写代码的教程。但是,如何将主窗口文件中的信息发送到
main.cpp
文件中的main函数

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


我很感激得到的任何帮助。非常感谢一个孤独的编码者

这不仅仅是关于文件,还有一个类。了解他们。解决方案是向
主窗口
类添加一个getter,该类将返回是否选中了
单选按钮

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

    // other stuff ...
};

然后您可以在
窗口中访问它,如
窗口。isBinaryFormatChecked()

窗口->isBinaryFormatChecked()
取决于您是否有指针。另一种方法是将
main窗口中的
ui
公开,这样您可以访问整个用户界面,但这会破坏正确的封装。

首先,您不会在
main.cpp
中编写ui代码。 您可以在
MainWindow.cpp
MainWindow.h
中的
MainWindow
类所在的位置编写它

然后您的
ui->
将工作,因为它可以访问该名称空间

我不明白为什么在
Main.cpp
中会有函数? 如果看不到更多的代码,你就不可能得到答案

如果要在类中使用外部函数,请直接声明类中的方法,或创建一个新文件,如
global\u function.h
.cpp
,可将其包含在类中。(不要忘记收割台护罩)

这段代码不应该是这样的吗:

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

如果选中RadioButton,则标志设置为false

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

getOpenFileName()
将返回一个字符串,其中包含所选文件的路径和文件名,然后可以将其传递给函数


请阅读更多关于如何使用的信息。

我认为,在尝试集成已经运行的控制台代码之前,您需要先阅读Qt提供的一些示例(我认为非常好)


基本上,您确实不想在main.cpp中执行该检查,但是如果必须,您可以在main窗口的公共函数中使用它,并从main.cpp文件调用它。但这并没有真正意义,因为在用户输入内容之前,您不想检查是否设置了相应的单选按钮。您必须阅读基于事件的编程。

在main.cpp中,我获得了用于处理给定.stl文件的函数和类。在这里,CAD数据被分层,并生成一个带有机器人路径的文件。这部分工作正常,这不是我没有发布其他函数代码的原因。我不想让别人知道我做得很好,而我个人的问题在于一些不同的东西。但是我可以在这里发布我在命令窗口程序中使用的主函数的代码。@user3794592将函数切换到一个新文件,并将其包含在MainWindow类中仍然是一个更好的主意,这样会使您的生活更轻松。您的意思是我应该将我的所有代码从main.cpp获取到一个类似processing.cpp/.h的文件中并使用它在mainwindow.cpp?@user3794592 yes中,或者为它创建一个自己的类,如果这样做可能会更好,我只执行mainwindow.cpp中以前的主函数中的代码,对吗?