C++ 为什么QFileDialog::getOpenFileName不';不行?
在字符串中,路径是正确的,但它不会将字符串放入我的表中。没有错误或警告。例如,当我这样做时:C++ 为什么QFileDialog::getOpenFileName不';不行?,c++,qt,model-view-controller,qfile,qfiledialog,C++,Qt,Model View Controller,Qfile,Qfiledialog,在字符串中,路径是正确的,但它不会将字符串放入我的表中。没有错误或警告。例如,当我这样做时: meinModel->setData(filename, filename); 它查看字符串:E:/test.txt 我有一个QTableView和一个QAbstractTableModel void View::OpenFileButtonClicked() { QString filename = QFileDialog::getOpenFileName(0, Q
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;
}
&*fileMy
实际上是fileMy
的值,如果取消QFileDialog
,返回的字符串将为空堆栈上的create QFile对象。您不需要将此指针保持在此方法之外。否则,您将需要删除使用new
创建的每个对象。my setData工作正常。我只需要给她发两条短信。在我使用meinModel->setData(firststring,secondstring)的其他方法中;它起作用了。。只有用这种方法。。