2013-07-17 134 views
1

我正在嘗試學習C++,並且正在使用Qt框架。我目前試圖完成的是從資源文件加載自定義字體。當我運行這個時,File Found被輸出到控制檯窗口。當我取消註釋掉的註釋行時,出現錯誤'search' was not declared in this scope。在Qt Creator我有objectName設置爲search。我認爲我可以像訪問過註釋的那樣訪問它,但我想我不能。我究竟做錯了什麼?'搜索'未在此範圍內聲明

int main(int argc, char *argv[]){ 
    QApplication a(argc, argv); 
    Apollo w; 
    w.show(); 

    int fontID(-1); 
    QFile res(":/lib/fonts/SourceCodePro-ExtraLight.ttf"); 
    if(res.open(QIODevice::ReadOnly) == true){ 
     fontID = QFontDatabase::addApplicationFontFromData(res.readAll()); 
     if(fontID == -1){ 
      qDebug() << "File Not Found"; 
     }else{ 
      qDebug() << "File Found"; 
     } 
    } 
    //search.setFont(QFont("Source Code Pro ExtraLight", 26)); 

    return a.exec(); 
} 
+0

你能分享'search'的定義嗎?您定義此對象的代碼。 –

+0

藉助爲您生成代碼的GUI構造函數學習語言不是一個好主意。 –

+0

@ n.m。這就是我學習的方式,我從一個GUI開始,然後當我開始瞭解GUI所做的工作時,我會在沒有GUI的情況下開始做。這是如何學習Java。我使用了一個生成代碼的GUI生成器,現在我不使用它,可以在沒有它的情況下編寫Java。我在這裏做同樣的事情。 –

回答

1

您的對象名稱是「搜索」。

的對象是我猜的GUI的一部分,所以如果你想擁有的存取權限它,你應該做這樣的事情:

ui->search->setFont(...); 

Qt Creator的是很聰明併爲您提供了一種自動的補充。如果它在大多數情況下不提供給GUI的對象,那就意味着你做錯了。

+0

'ui'未在此文件中定義,但是在另一個文件中定義。我應該把代碼放在那裏嗎? –

+0

我有一個很難得到這個,然後我看到我在我的樣式表中設置字體樣式,這壓倒了我真正想要的字體。 –