类型:C++ & Qt4,创建时间:July 31, 2014, 11:17 a.m.
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/95/。
目前大家都使用cpp的stl和boost作为cpp的标准库。不过个人觉得stl和boost用起来不是很爽。不如用Qt。但,很多人觉得Qt这个库太大,而且如果不使用Qt的GUI也安装一大堆没用的dll——其实这都不是问题,我们可以在编译Qt的时候使用no-gui
选项,告诉Qt我们只对它的非GUI部分感兴趣,避免编译与安装大量无用的Qt组件。
接下来我在vs2010 express版本里面做个实验。使用的是qt5.3.1。首先到[http://lt.mirrors.sohu.com/qt-all/official_releases/qt/5.3/5.3.1/submodules/]下载qtbase-opensource-src-5.3.1.zip
,这是for windows版本,里面带了一个configure.exe
,扩展名为.tar.gz
的压缩包里面没有。
我把它解压到d:\qtbase
,打算把它安装到c:\qt5
里面。编译安装三部曲:./configure && make && make install,命令行:
d:\qtbase > configure.exe -prefix c:/qt5 -release -opensource -shared -no-ltcg -nomake tools -nomake examples -no-gui -no-icu d:\qtbase > jom d:\qtbase > jom install
完成以后到c:/qt5里面看看,现在不会发现有庞大的qt库了。整个qtcore大约占用了140m,其中有一个Qt5Bootstrap.lib
居然有120m,不知道是什么东东。为什么会这么大呢?删掉以后整个Qt库只剩下20m,也可以跑起来。高手说说这个东西是干啥用的?
接下来我们就可以像普通的cpp库那样子使用Qt了。下面是一个例子:
//testqt.cpp #include <QtCore> int main(int argc, char **argv) { qDebug() << QString::fromLocal8Bit("中文"); return 0; }
编译这个文件所使用的命令行:
d:\projects\testqt > path %PATH%;c:\qt5\bin d:\projects\testqt > cl -I c:\qt5\include\QtCore -I c:\qt5\include\ testqt.cpp /link c:\qt5\lib\Qt5Core.lib d:\projects\testqt > testqt.exe
因为我们编译安装的Qt还附带了qmake系统,所以我们还可以使用qmake管理工程,或者使用Qt的moc预处理工具处理从QObject派生的类型,这是使用Qt的signal/slot的基础。因为这里与Qt的正常使用流程完全一样,所以这里就不演示了,只是需要注意在.pro文件里面添加这两行:
QT -= gui CONFIG += console
好吧,上个源代码:
//main.cpp #include <QCoreApplication> #include <QTimer> #include <QDebug> #include "fish.hpp" void Fish::quit() { qDebug() << "Fish::quit() called"; QCoreApplication::instance()->quit(); } int main(int argc, char **argv) { QCoreApplication app(argc, argv); Fish f; QTimer::singleShot(1000, &f, SLOT(quit())); return app.exec(); } //fish.hpp #include <QObject> class Fish:public QObject { Q_OBJECT public slots: void quit(); }; //testqt.pro TEMPLATE = app TARGET = testqt INCLUDEPATH += . QT -= gui CONFIG += console # Input HEADERS += fish.hpp SOURCES += main.cpp
后记一个:据说不编译qmake/moc这些工具也可以?
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/95/。
暂时还没有任何评论。