【发布时间】:2021-10-28 06:33:39
【问题描述】:
我正在尝试使用 Qt 编写一个简单的 C++ 代码来获取文件夹的路径。
我从this 答案中获得了代码,并对其进行了一些调整以适合我想要的。我的问题是它标记了我的“this”声明,说我的类与“QWidget *”参数类型不兼容。
#include <iostream>
#include <qt5/QtWidgets/qfiledialog.h>
using namespace std;
class TCC {
public:
string openFile();
};
string TCC::openFile()
{
QFileDialog::getOpenFileName(this, tr("Open Document"), QDir::currentPath(), tr("Document files (*.doc *.rtf);;All files (*.*)"), 0, QFileDialog::DontUseNativeDialog);
QString filename = QFileDialog::getOpenFileName(
this,
tr("Open Document"),
QDir::currentPath(),
tr("Document files (*.doc *.rtf);;All files (*.*)"));
if (!filename.isNull())
{
qDebug(filename.toUtf8());
}
return filename.toUtf8().constData();
}
int main()
{
TCC tcc;
cout << tcc.openFile();
}
【问题讨论】:
-
我相信您传递给
getOpenFIleName的指针应该是派生自QWidget的类类型 -
将指向您的一个 QWidgets 的指针作为第一个参数传递将帮助 Qt 知道要在哪个监视器上打开对话框(它将打开到与该小部件相同的监视器上)
-
对话框也会继承父控件的样式表。
标签: c++ qt visual-c++