在String中,路径是正确的,但是它不会在我的table中放置字符串。没有错误或警告。例如,当我这样做时:
meinModel->setData(filename, filename);
它查看字符串:E:/test.txt
我有一个QTableView和QAbstractTableModel。
void View::OpenFileButtonClicked()
{
QString filename = QFileDialog::getOpenFileName(0, QString(), QString()
,tr("Data (*.txt)"));
fileMy = new QFile(filename);
QTextStream stream (&*fileMy);
while (!stream.atEnd())
{
QString line = stream.readLine();
QStringList list = line.split(",");
QString firststring;
firststring = (list.first());
QString secondstring;
secondstring = (list.last());
// Strings are sent to Model which view they in my tableview.
meinModel->setData(firststring, secondstring);
}
}
奇怪,因为这可行:
void View::FileButtonClicked()
{
QString fileName;
if (txtPfad->text().length() > 0 )
{
fileMy = new QFile(txtPfad->text());
}
else
{ fileMy = new QFile("E:\\test.txt"); }
if (!fileMy->open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::information(this, tr("ERROR"), tr("Daten konnten icht eingelesen werden"));
return;
}
QTextStream stream (&*fileMy);
while (!stream.atEnd())
{
QString line = stream.readLine();
QStringList list = line.split(",");
QString firststring;
firststring = (list.first());
QString secondstring;
secondstring = (list.last());
meinModel->setData(firststring, secondstring);
}
}
最佳答案
您错过了在OpenFileButtonClicked
中打开文件的权限:
if (!fileMy->open(QIODevice::ReadOnly | QIODevice::Text))
{
QMessageBox::information(this, tr("ERROR"), tr("Daten konnten icht eingelesen werden"));
return;
}
关于c++ - 为什么QFileDialog::getOpenFileName不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25363351/