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