在处理程序中使用 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访问变量。
我已经在 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访问变量。