简体   繁体   English

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

[英]Why QFileDialog::getOpenFileName doesn't work?

In the String the path is right, but it doesn't put strings in my table . 在String中,路径是正确的,但是它不会在我的table中放置字符串。 No Error or Warnings. 没有错误或警告。 When I do this for example: 例如,当我这样做时:

 meinModel->setData(filename, filename);

it views the Strings : E:/test.txt 它查看字符串:E:/test.txt

I have a QTableView and a QAbstractTableModel. 我有一个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);
            }        
    }

Strange, because this works: 奇怪,因为这可行:

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

You missed opening of a file in OpenFileButtonClicked : 您错过了在OpenFileButtonClicked打开文件的OpenFileButtonClicked

if (!fileMy->open(QIODevice::ReadOnly | QIODevice::Text))
{
    QMessageBox::information(this, tr("ERROR"), tr("Daten konnten icht eingelesen werden"));
    return;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM