• 10600阅读
  • 11回复

原来Qt将标准C++都封装了 [复制链接]

上一主题 下一主题
离线yuhongp
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-23
刚学了1周的Qt,发现Qt中将标准C++的东东都封装了,用起来不是很爽,虽然封装可以加入新的功能特性,但毕竟很多人都是从C++开始学起的,很多东西习惯性的联想到C++标准库中的使用方法,比如std::cout、ASSERT等等,虽然可以再Qt中找到类似的方法,但这需要对Qt有一段时间的了解后才能够找到,这好像增加了Qt的开发人员的负担。要是Qt能够对于标准的C++库不做转换那该有多好!

另外,我找了一些例子程序看,发现Qt中很少使用try...catch,呵呵,不知道为什么?
离线dbzhang800

只看该作者 1楼 发表于: 2009-07-23
谁说的 std::cout, assert在Qt中不能用??

Qt只是C++的一套开发框架,C++中的东西该怎么用的你还是怎么用。Qt只不过是提供了更多的选择

  1. #include <QtCore/QCoreApplication>
  2. #include <iostream>
  3. #include <cassert>
  4. int main(int argc, char *argv[])
  5. {
  6.     QCoreApplication app(argc, argv);
  7.     std::cout<<"aaaaaa"<<std::endl;
  8.     assert(true);
  9.     return app.exec();
  10. }
离线napier

只看该作者 2楼 发表于: 2009-07-23
弱问:

在 Qt Creator 中使用 #include <iostream> 提示 “No such file or directory” 是怎么回事?找不到标准 C++ 库么?需要特别设置么?
离线yuhongp

只看该作者 3楼 发表于: 2009-07-23
to dbzhang800:
我在XP平台下用qt + Eclipse时,却不能够使用标准的c++,你的代码中,编译时会报无法找到<iostream> ,我查了一下该文件的头文件位置在minGW\include\c++\.....的某个目录下面,我在环境变量path中添加了改路径,可是编译的时候还是报上面的错误,所以我才有上面的疑问。也许这只是在windows平台才有这个问题吧。可能在linux/unix平台下可以直接使用,但这个又和Qt的一次编写、多处编译的原则有出入。

to napier:
我也碰到了和你一样的问题,搞了好久没有搞出个原因来,我才转到Qt来开发,所以有些东西不是很清楚,希望这个帖子可以有高手帮忙
离线jorneyr

只看该作者 4楼 发表于: 2009-07-23
以前在windows的时候, 用eclipse + mingw写qt, C++标准库的东西直接使用, 没有任何问题. 估计是你的环境没设置好.
离线jorneyr

只看该作者 5楼 发表于: 2009-07-23
刚才克意去windows里试了试, 下面的代码没有任何问题, 运行正常:
#include <QtGui/QApplication>
#include "widget.h"
#include <qDebug>
#include <iostream>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    Widget w;
    w.show();
    qDebug() << "Hello";
    std::cout << "Hello";
    return a.exec();
}

环境: windows xp + Qt4.5 SDK(直接用的Qt Creator), 安装后什么也没有设置过, 默认就使用了。
离线yuhongp

只看该作者 6楼 发表于: 2009-07-24
to jorneyr:
刚才用Qt Creater试了一下,发现可以使用,但不知道为什么在Eclipse的环境中不能够使用,可能是我的环境配置问题吧,不过我的环境变量配置如下:
path:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Java\jdk1.5.0_09\bin;C:\Qt\2009\qt\bin;C:\Qt\2009\mingw\bin;C:\Qt\2009\bin;
QTDIR:c:\qt\2009\qt
QMAKESPEC:win32-g++
另外,我在有的书上看到,有的说需要下面两个环境变量,但在qtenv.bat文件中没有发现,不过我还是添加了:
include:C:\Qt\2009\qt\include;C:\Qt\2009\mingw\include
lib:C:\Qt\2009\qt\lib;C:\Qt\2009mingw\lib

我这样设置不知道是否正确?
离线yuhongp

只看该作者 7楼 发表于: 2009-07-24
刚才又试了一下,发现如下问题:
1、在Eclipse中,#include <iostream>语句前面有“?”标志,且在编码的时候不能够出现代码提示,不过编译却成功了。
2、在Creater中,有代码提示功能,且也能够正确运行。

另外问一下关于代码提示功能的问题,Eclipse中可以直接通过"ALT + /"来打开代码提示窗口,在Creater中是否有相应的功能?
离线jorneyr

只看该作者 8楼 发表于: 2009-07-24
引用第7楼yuhongp于2009-07-24 09:33发表的  :
刚才又试了一下,发现如下问题:
1、在Eclipse中,#include <iostream>语句前面有“?”标志,且在编码的时候不能够出现代码提示,不过编译却成功了。
2、在Creater中,有代码提示功能,且也能够正确运行。
另外问一下关于代码提示功能的问题,Eclipse中可以直接通过"ALT + /"来打开代码提示窗口,在Creater中是否有相应的功能?

1、在Eclipse中,#include <iostream>语句前面有“?”标志,且在编码的时候不能够出现代码提示,不过编译却成功了。
那是因为你的include文件路径根本就没有加入到eclipse的环境中, 得你自己手动的从工程属性的库中添加.

在Eclipse中新建一个C++工程,把Qt的Include目录(只要是没有的都可以加)加入到工程中: project->properties->Path and Symbols->Includes->Gnu C++->add Qt的Include目录.

另外问一下关于代码提示功能的问题,Eclipse中可以直接通过"ALT + /"来打开代码提示窗口,在Creater中是否有相应的功能?
这个在Qt Creator的快捷键设置里可以自己更改的, 我就改为了cmd + ; 来提示代码.
Qt Creator->环境->快捷键: TextEditor->CompleteThis
离线napier

只看该作者 9楼 发表于: 2009-07-24
我的问题解决了,是装 Qt 的时候连带着把 mingw 也重装了,路径变了,但环境变量还是以前的。纯属马虎大意造成的问题。
离线yuhongp

只看该作者 10楼 发表于: 2009-07-24
非常感谢jorneyr,在Creater中打开代码提示的功能能够成功,非常感谢

对于Eclipse中#include <iostream>语句前面有“?”标志的处理,我没有找到你说的project->properties->Path and Symbols->Includes设置,不过我想可能是如下设置:project->properties->c/c++ include Path and Symbols中添加了include及pathcontainers(只添加include不能够成功),现在好像是可以消除前面的问号了。

看样子对eclipse还是有点不熟悉,回头找本书看看再说。
离线jorneyr

只看该作者 11楼 发表于: 2009-07-24
呵呵, 看来你确实是对eclipse不太熟.
下面是我以前用windows使用eclipse写qt作的笔记, 不防参考一下, 也许能解决你的问题.
http://huangbiao00.spaces.live.com/blog/cns!FDDCD947AE5B2C06!381.entry
快速回复
限100 字节
 
上一个 下一个