2012-03-07 63 views
1

在我的方法之一,我需要一個QFile對象:一個QFile ::一個QFile功能 - >錯誤:一個QFile :: QFile時(常量一個QFile&)「是私有

void GUIsubclassKuehniGUI::LoadDirectory() 
    { 
     QString loadedDirectory = QFileDialog::getExistingDirectory(this, 
                "/home",tr("Create Directory"), 
                QFileDialog::DontResolveSymlinks); 
     ui.PathDirectory -> setText(loadedDirectory); 

     QFileInfo GeoDat1 = loadedDirectory + "/1_geo.m4"; 
     QFileInfo GeoDat2 = loadedDirectory + "/2_geo.m4";   
     QString Value; 

     if (GeoDat1.exists() == true) 
     { 
      QFile GEO = (loadedDirectory + "/1_geo.m4"); // ERROR LINE HERE! 

      if(GEO.open(QIODevice::ReadOnly | QIODevice::Text))  
      { 
       QTextStream Stream (&GEO); 
       QString Text; 
       do 
       { 
        Text = Stream.readLine(); 

        QString startWith = "start"; 
        QString endWith = "stop" ;          
        int start = Text.indexOf(startWith, 0, Qt::CaseInsensitive); 
        int end = Text.indexOf(endWith, Qt::CaseInsensitive);   

        if (start != -1)            
         Value = Text.mid(start + startWith.length(), end - (start + startWith.length())); 


        double ValueNumber = Value.toDouble(); 
        ValueNumber = ui.ValueLineEdit->value(); 
       } 
       while(!Text.isNull()); 
       GEO.close(); 
      } 
     } 
     else if (GeoDat2.exists() == true) 
     { 
      ... 
     } 
    } 

的問題是標誌着我行與「// 錯誤行在這裏!」。編譯時,我收到錯誤消息:QFile :: QFile(const QFile &)'是私人的。我不明白這一點,因爲在QFile記錄片中,該函數被聲明爲公共的。 有人可以告訴我如何解決這個問題嗎?

+1

QFile時創建一個QFile是QObject,甚至不會複製一個QObject。這是Qt限制。使用operator =在堆上分配QObject是被禁止的 – 2012-03-12 08:27:22

回答

5

替換:

QFile GEO = (loadedDirectory + "/1_geo.m4"); 

這一行:

QFile GEO(loadedDirectory + "/1_geo.m4"); 
+0

謝謝,這讓我瘋狂! – ntzrmtthihu777 2014-08-08 18:49:14

2

刪除等號做直接初始化

2

你做了什麼,在這裏

QFile GEO = (loadedDirectory + "/1_geo.m4"); 

使用賦值運算符從一個路徑,這是不可能的

你應該使用構造這樣

QFile GEO(loadedDirectory + "/1_geo.m4");