所以我试图让我的“按钮”直接执行批处理文件,这里重要的是我不希望它向我显示对话并让我选择路径,这就是我遇到的问题现在使用以下代码
void MainWindow::on_pushButton_clicked()
{
QString filename=QFileDialog::getOpenFileName(
this,
tr("Open File"),
"C://",
"All files (*.*);;Text File (*.txt);;Music file (*.mp3)");
}
我认为这可能真的很简单,但我无法理解,我现在甚至没有学习 c++,但我的老板让我创建一些超出我的范围的东西(希望我为批处理文件并让它们交互),我想到了这种方法,它只是创建一个执行它的 GUI。
我看过这个问题:asked to execute an external program with Qt
但他们没有讨论如何将文件路径直接添加到代码中,或者我是否应该使用 Qprocess 以及如何使用,以及我是否可以通过“点击”函数传递它。
我真的是没经验,上面的代码都是网上找的,但是我真的不知道怎么用c++编程 所以有人可以告诉我如何将文件路径添加到代码中,假设它在 C:\Users\name_goes_here\Downloads
我真的很感激:D
最佳答案
我建议将 QProcess 用于 Qt 的任何“执行外部程序”。
你可以这样做:
void MainWindow::on_pushButton_clicked()
{
QProcess process;
process.start("C:/Users/name_goes_here/Downloads/yourfile.bat");
process.waitForFinished(); // Assuming that you do want to wait for it to finish before the code execution resumes
}
注意路径中的“/”。只有 Windows 使用乱七八糟的“\”进行路径分隔,这需要您在 C++ 中的任何字符串中编写 "C:\\Users\\.."
,因为“\”需要转义.
幸运的是,Qt 使用“/”作为通用分隔符并将其转换为操作系统所需的任何内容。因此,无论何时使用 Qt,您都应该只使用“/”。
这是来自 Qt 文档:
Qt uses "/" as a universal directory separator in the same way that "/" is used as a path separator in URLs. If you always use "/" as a directory separator, Qt will translate your paths to conform to the underlying operating system.
最后,如果您不知道如何使用 C++ 编写代码,难道您不应该先学习它而不是尝试从像 Qt 这样复杂的库中执行批处理文件吗?听起来你试图同时做太多新事情。
关于c++ - qt中通过clicked函数直接执行一个batch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901840/