c++ - qt中通过clicked函数直接执行一个batch

标签 c++ qt user-interface

所以我试图让我的“按钮”直接执行批处理文件,这里重要的是我不希望它向我显示对话并让我选择路径,这就是我遇到的问题现在使用以下代码

  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

但他们没有讨论如何将文件路径直接添加到代码中,或者我是否应该使用 Qpr​​ocess 以及如何使用,以及我是否可以通过“点击”函数传递它。

我真的是没经验,上面的代码都是网上找的,但是我真的不知道怎么用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/

相关文章:

不使用新的C++内存分配错误

c++ - 在 Qt C++ 中连接用户特定的 DBus session

c++ - 如何在 QTabWidget 中为选项卡设置布局?

c++ - 如何限制Qt中的日志大小

c# winforms 使控件可调整大小

android - 在android中制作具有不同颜色的背景矩形

python - 为什么 PyGtk 中的 set_model 方法将第一列的值复制到第三列?

c++ - 3 未解析的外部符号(初学者 C++)

c++ - 从 native c++ dll 将 stdout 重定向到 Visual Studio 输出窗口

c++ - 将指针 * 分配给指针 ** 时它是如何工作的?