在处理程序中使用 getOpenFileName

using getOpenFileName in a handler

我已经在 qt 的处理程序中实现了 getOPenFileName(更具体地说是在 when_pushbutton_clicked 中)。如何将生成的字符串保存在 main 中的 QString 而不是处理程序中?

您可以使用信号连接将文件名的路径保存在 QString 变量中。

const QString fileName = QFileDialog::getOpenFileName(0, tr("Select the file"), getLastDirectory(), "Txt Files (*.txt)");
if (fileName.isEmpty()) {
    // No file was selected
    return;
}
// then emit the signal
emit fileWasSelected(fileName);

在您的主要功能中,您无法通过简单的连接处理主要 class 中的事件:

QObject::connect(yourClass, &YourClass::fileWasSelected, [&](const QString& filename) {
  // Now, do what you want with your path 
}):

另一种方式,就是将文件保存在私有变量中,并设置一个getter:

class MyClass {
   ....
public:
    inline QString path() const { return _path; }
private:
    QString _path;
}

然后从main访问变量。