2013-07-17 249 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

我有一个很难得到这个,然后我看到我在我的样式表中设置字体样式,这压倒了我真正想要的字体。 –