为什么 QFileDialog::getOpenFileName 不起作用?

Why QFileDialog::getOpenFileName doesn't work?

本文关键字:不起作用 getOpenFileName 为什么 QFileDialog      更新时间:2023-10-16

在字符串路径是正确的,但它不把字符串在我的表。无错误或警告。当我这样做时,例如:

 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;
}