Posts Tagged ‘Qt’
这个可能不算是很新的消息,很久以前就听人提过。不过这个计划现在才算是正式上线了!
官方主页在此:http://qt.nokia.com/qt-in-use/ambassadors/qtambassador/
简单来说,有点像前段时间推的Qt Certificate的性质, 只是certificate是针对个人的, 而这个是针对项目的。 对于Nokia本活动旨在网罗一批优秀的Qt project, 可以很好的展示和宣传Qt的酷炫功能。 对于参与的个人来说最大的好处是多了更多宣传自己的渠道, 还有可能得到官方的赞助。 可惜俺编程的水平很烂,没有能拿得出手的东西,要不然我也是show一show了。
大家如果想了解更多的信息请上官网。 另外还有一篇blog介绍这个dd的, 在此(需要youtube翻墙):
http://blog.qt.nokia.com/2010/07/20/call-for-ambassadors-qt-ambassador-program-launches/
Read More...
Tags: Ambassador, Qt
Posted on July 30th, 2010 in 新闻类 | 1 Comment ».
今天在Linux下测试了Mysql数据库与Qt结合的应用练习,Qt经常要与数据库打交道,如Oracle(甲骨文公司数据库巨人)、 SQL(中大型数据库)、mySQL(小型关系型数据库管理系统)、Access(小到办公软件的office数据库access)。经常使用的客户端数 据库驱动有ODBC、MySQL、SQLite等。现在重点介绍MySQL,默认的情况是没有安装MySQL的驱动的,只用一个SQLite嵌入式数据库 可以编写以下代码显示数据库驱动。
#include <QApplication>
#include <QDebug>
#include <QtSql>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
qDebug()<<”Available drivers:”; //输出有效的数据库驱动
QStringList drivers = QSqlDatabase::drivers(); //用字符列表的形式将SQL数据库设备驱动列出来
foreach(QString drivers,drivers); //foreach语句为数组或对象集合中的每个元素重复一个嵌入语句组,foreach语句用于循环访问集合以获取所需信息。
qDebug()<<”\t”<<drivers;
return app.exec();
}
QtSql是数据库类的集合,要使用到因此要添加模块头文件#include ,创建工程文件时也要选中Sql库,或在*.pro中的编译入口input下方添加QT += sql
QMYSQL和QMYSQL3先前是没有的,编译安装QMYSQL驱动后就有,怎么安装?
Read More...
Tags: mysql, Qt
Posted on July 2nd, 2010 in Linux技术, Qt技术 | 6 Comments ».
在Linux和Windows上做过开发的朋友,可能会发现在把应用移植到手机上的时候,不是那么符合手机上的用户使用习惯。而且很多培训教材在讲授Qt 的时候也是针对桌面应用的,对于初学者如果依照培训材料上的例子直接编译成手机版本,也会碰到这个问题。在此我把几个经常碰到的问题整理一下。
QWidget 还是QMainWindow
QMainWindow和QWidget的区别是QMainWindow包含工具栏、状态栏以及 菜单等,对于手机应用来说可见的最大区别是菜单,也就是左下角的那个”Options”选项。
所以,如果你的应用较复杂,需要用到菜单处理的时候请使用QMainWindow做为你应用的主窗 口。使用QMainWindow的时候,初学者往往会碰到另一个问题,就是在往QMainWindow里增加新的控件,并使用QLayout来管理这些控 件的时候,经常不能成功。原因是QMainWindow有它自己的布局管理器,如果需要在QMainWindow中增加新控件和布局时,可以通过 QMainWindow::setCentralWidge(QWidget *)给QMainWindow的主界面设定一个QWidget *cw,然后在cw中定义自己的布局和控件。
Read More...
Tags: guide, Qt, symbian
Posted on April 21st, 2010 in Qt技术, s60 | 8 Comments ».
摘要:本文介绍怎么在Qt for Symbian程序中即使手机水平状态发生变化的时候强制使用横屏或竖屏。
对于带有水平传感器的Symbian手机,在用户将手机从横屏模式(Landscape)切换到竖屏模式(Portrait)时,系统会自动调整手机的屏幕显示方向,满足用户正常的使用需要。屏幕横宽比的变化,需要应用调整窗口的布局,以保证更好的用户体验。
但是在某些特殊场合中(比如游戏),开发者可能希望即使手机的水平状态已经变化,需要屏幕继续保持原来的屏幕方向,提示用户只能在横屏或者竖屏方向上使用当前的应用,这就需要通过设置,让手机屏幕强制处在横屏或者竖屏状态。
Qt的当前版本(Qt-4.6.2)并没有提供直接控制Symbian 手机屏幕模式的API,需要通过使用Symbian的API来完成。
设置API函数为:CAknAppUi::SetOrientationL();
在Qt中的使用显示代码如下:
#ifdef Q_OS_SYMBIAN
void MyWidget::setPortraitMode()
{
CAknAppUi *aknAppUi = dynamic_cast(CEikonEnv::Static()->AppUi());
if (aknAppUi)
aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);
}
void MyWidget::setLandscapeMode()
{
CAknAppUi *aknAppUi = dynamic_cast(CEikonEnv::Static()->AppUi());
if (aknAppUi)
aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);
}
#endif
要使用上面代码中的Symbian函数,需要在代码里把symbian的几个相关头文件加入到源码中
#ifdef Q_OS_SYMBIAN
#include <eikenv.h>
#include <coemain.h>
#include <aknappui.h>
#endif
并且需要在Qt的.pro工程文件中加入以下内容,保证应用能够编译和链接
symbian {
LIBS += -lconnmon -lcone -lavkon
}
注意:该功能在模拟器上不能模拟,但是在Symbian手机上工作正常。
Read More...
Tags: device, Qt, symbian
Posted on April 20th, 2010 in Qt技术, s60 | 4 Comments ».
提前声明,本文可以说和Qt关系很大, 也可以说和Qt毫无关系,如果对git没兴趣的看官可自行绕过…
git是目前Qt及其相关项目开发官方使用的代码管控工具, 我们在前面的blog中已经介绍了如果用git访问Qt项目和QtCreator项目, 详细的信息可以在下面两篇帖子中找到:
从Qt仓库获取最新代码的新手指南
QtCreator官方Git上手指南
要说git确实是个不错的工具, 如果仅仅用它做代码版本管理真有点屈才。 本文就介绍一个git的好功能, 希望对大家有用。
Git bisect
bisect这个关键字应该写成bi-sect大概更好理解, 学过算法的人应该对这个“bi-”不陌生吧? 对了,就是“二分”的意思。 顾名思义, 这个bi-sect就是做代码的二分, 而且是在两个change之间做二分。 这种二分有什么用处呢? 聪明的同学应该已经想到了吧? 既然是在change之间做二分当然是为了定位某个change, 所以一般情况下这个bisect用于寻找某项对功能产生影响的修改, 如假设某个change给代码里引入了bug, 我们可以通过在好版本和坏版本之间做二分最终定位到引入bug的代码修改; 同理, 如果某个bug被修正了, 我们的当务之急是找到bugfix, 但是在每天几十几百个增加的修改中寻找一个change那无异于大浪淘沙大海捞针(举个例子, 笔者统计了一下, 从Qt4.5.3到Qt4.6.0之间的change数量是超过五千个…请大家闭上眼睛想象一下如果在这些change里找到你感兴趣的那个change还有什么好方法。), 这时二分定位就显得十分必要了。
Read More...
Tags: bisect, git, Qt, syncqt
Posted on March 29th, 2010 in Linux技术, Qt技术, Windows技术 | 1 Comment ».
题记: 要知道,并不是只有初学者才会犯错。(shiroki的至理名言)
最近发现了一些有意思的问题,值得memo一下。
先来看段代码:
#include <QApplication>
#include <QWebView>
#include <QUrl>
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
QWebView* mw = new QWebView;
mw->show();
mw->load(QUrl(“http://www.cuteqt.com/blog”));
return a.exec();
}
大家看得出这段代码中的问题吗? (呵呵,不要告诉我是cuteqt不能访问哦~)
这段代码ms十分标准, 非常符合笔者平时写Qt程序书写main函数的习惯, 孰料想竟然是个错误的习惯,而且问题很严重哦。 给个提示:在程序退出时会aborted。
如果还没想出来是什么问题,嘿嘿,没关系,看了下面的答案你就明白了。
在这段程序里QApplication实例创建在stack上,生命期是main的大括号内, 而mw则通过new创建在heap上, 在程序退出时才会被析构。 换句话说,mw的生存期长于application的生存期…..这可是Qt编程的大忌, 因为在Qt中所有的Paint Device都必须要在有QApplication实例的情况下创建和使用。 不过如果把这个程序写出来运行一下, 未必会出现我说的aborted的问题, 大多数代码类似的程序都能安全的运行(这也是为什么用了那么多年的Qt从来没有注意过这个问题, 并且养成了我错误的编程习惯。)。 这里的trick在于application退出时mw已经被关闭, mw中的所有Paint Device一般都不会被访问到了, 所以这个错误隐藏在很深的阴暗角落, 偷偷地嘲笑我们呢!
要想试验这个问题也很简单,把load的参数换成本地文件 test.html, [...]
Read More...
Tags: debug, Qt
Posted on December 15th, 2009 in Qt技术 | 4 Comments ».
本来前两天转了一篇qteveywhere介绍Qt开发者认证的博文,后来想了想转载没什么意思,还是应该自己写写。
赫赫,本文的题目起的不太贴切, 可能叫“揭秘”更好些, 毕竟咱签了NDA, “泄密”这么不厚道的事咱可干不来。
关于Qt开发者认证的详细内容,请各位参考qteverywhere博客的文章(http://www.qteverywhere.com/archives/565), 这里笔者就不啰嗦了。 本文的重点是讲讲笔者去考试的感受。
报名需要在http://www.pearsonvue.com/注册帐号, 注册Nokia Qt考试, 选择考试网点和时间。 网点选项很多, 因为是上机考试,时间也很灵活, 笔者选择的考点每15分钟左右就有一个考试(跟京津动车似的)。 当然要填写一些自己的个人信息,姓名、email之类的, 最后确认时会交费。 关于交费这项笔者就没什么发言权了,因为俺用的优惠代码,没走到交钱那一步, 不过估计网上银行付款应该没什么问题。
根据报名的确认信息, 参加考试的人员应该在考试时间前至少15分钟到达考场, 因为前面还要进行你身份的确认和随身物品的寄存等。 考试当天记得带上自己的身份证件,如身份证,驾驶证等。 任何私人物品都不能带进考场,包括手机、纸笔等, 这些东西都要寄存。 考试前会给每位考生发一支笔和一张纸,可以拿来做Notes, 其实也用不上, 因为每道题目都有一个标记的地方,可以设个标记后面检查的时候根据标记就知道哪道题需要review了,很方便。
考试之前先是显示一篇NDA协议,差不多就是些“保证不泄漏考试题目”等等的内容, 一路确认接受协议才能继续考试。 所以想看开发认证会考到Qt哪些内容的同学要失望咯, 咱可不能干坏事…
Qt开发者认证全部是机考, 由系统随机抽取五十道题目,有单选多选,以多项选择题为主。 有些同学一听说是多选题立马就晕菜了,要知道我们常见的多选题可是多选少选都算错的! 不过那些老外没那么变态, 赫赫,Qt考试的题目中都会明确告诉你本题需要选择几个答案,甚至你多选少选了都会弹出提示信息, 你想这么做都是不可能的~~~ 每道题目都可以做标记,一种是“Review”的标记,一般是对答案不太确定,需要再来看一遍题目的时候使用, 还有一种是“Comments” 标记,估计是如果你觉得题目出的有问题可以发表一下自己的看法。
如果你对题目做了标记,在你做完题目之后系统会显示出你所有题目的标记,你可以点击某个题目的编号直接跳到你需要查看的题目,并且可以修改答案, 很人性化的设计。 全部题目要求在60分钟之内完成。 确认完成考试之后就不能再返回去修改答案了, 等待你的还有一个小的Survey, 让你对本次考试做个评价。 评价完成, 退出考试。 最后会打印一个考试的确认信, “感谢你参加Qt认证考试”云云, 当时是看不到答对题的数量的,也看不到题目的答案。 分数要过一段时间才能出来….俺的还不知道结果如何…等待ing…
Read More...
Tags: Certificate, Qt
Posted on October 26th, 2009 in 新闻类, 随笔类 | Comments Off.
本月21至23号,本人有幸参加了诺基亚在北航举办的Qt开发培训,是免费的哦,来参加的人员有很多是Nokia手机的第三方开发商,当然也有新浪腾讯等 大型互联网公司无线部门的开发者,看来Qt渗透力很强。而且提供午餐,早上下午都提供茶歇,有零食和水果供应,看来Nokia不差钱。培训师是来自于芬兰 的Niemi Petri,英语比好多芬兰人要好,课程讲得深入浅出,很好理解。课程内容涉及Qt的基本知识,以及Qt在S60和Maemo上的开发。
课程上还有课堂练习,下面我就把培训的PPT和作业以及演示代码传到我们网站上分享给没去参加的朋友。
qt_for_mobile_slides_day_1(Qt 偏底层知识,for windows/S60)
qt_for_mobile_slides_day_2(Qt 偏上层知识,for windows/S60
qt_for_mobile_slides_day_3(Maemo 开发)
exercise_day_1
demos_day_2
Read More...
Tags: Qt, s60, training
Posted on October 24th, 2009 in Qt技术, Windows技术 | 8 Comments ».
大家如果经常上Qt的官网可能注意到Qt从发布4.5开始开放了源代码仓库,并且邀请广大开源爱好者贡献自己的力量。 有兴趣有能力的同学们可要加油了哦~
当然大多数同学还是像我这样有兴趣但没能力的,不过也不用太着急,我们仍然有监督的权力,呵呵。
Qt的源码仓库
Qt的源码仓库用git做版本管理,提供浏览器可以访问的界面, 随便拿个browser就可以浏览仓库里的文件内容。
仓库的位置在 http://qt.gitorious.org/qt/qt
如果要下载源码其实也比较方便, git有不同平台的客户端,所以不管你用windows还是linux都可以很容易地获得最新的Qt源码并对其进行编译和验证。 几乎所有的Linux发行版都带了git的安装包,现成可用。 安装好git之后用下面的命令下载源码:
git clone git://gitorious.org/qt/qt.git
这样你拿到的是默认源码分支“master”。 用”git branch”命令可以看到当前工作的分支。
而用下面的命令可以查看Qt所有的源码分支:
git remote show origin
Read More...
Tags: build, git, mingw, Qt
Posted on October 23rd, 2009 in Linux技术, Qt技术, Windows技术, 随笔类 | 6 Comments ».
在前面的文章中笔者已经花很多篇幅介绍了打包和发布Qt程序需要做哪些工作, 新来的看官可以翻翻以前的帖子扫盲一下再继续。
如何打包发布基于Qt4 Windows的软件
打包发布的TIP:带着插件一起走
在《带着插件一起走》一文中讲到一个开发人员常见的问题 - 某些插件无法载入, 初学者最可能遇到的情况是插件没有和应用程序一起打包发布, 导致Qt程序找不到插件进而影响到程序的功能(如图片格式不支持, 数据库打不开等); 另外还有一些不太容易想到的情况也会导致插件无法载入, 本文就着重讨论这方面的内容。
Read More...
Tags: Deployment, plugin, Qt
Posted on October 15th, 2009 in Linux技术, Qt技术, Windows技术 | No Comments ».