为了练习,我正在尝试使用 QT 库选择一个文件夹并列出该文件夹中 dicom 文件的名称。以下是代码:
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QString fileName = QFileDialog::getExistingDirectory();
if (fileName.isEmpty())
{
std::cout << "Got an empty file!\n";
}
else
{
QStringList nameFilter;
QDir dir(fileName);
nameFilter << "*.dcm";
QFileInfoList list = dir.entryInfoList( nameFilter, QDir::Files );
int numberOfFiles=list.count();
for(int i=0;i<numberOfFiles;i++)
{
QString filena=list[i].fileName();
string a=filena.toStdString();
cout<<a<<endl;
}
}
return 0;
}
在这里,我发现该函数toStdString
实际上是std::string QString::toStdString () const
,给出了堆错误。我知道摆脱这个错误的替代方法是使用toLocal8Bit().constData()
,但我很好奇 toStdString 提供的堆错误背后的主要原因是什么。是因为它是const
类型,而我的 for 循环每次都试图覆盖 const 变量吗?