找回密码
 立即注册
收起左侧

《Qt Creator快速入门》第二版主要更新内容

43
回复
39299
查看
[复制链接]
累计签到:1568 天
连续签到:1 天
来源: 2013-10-28 21:46:09 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
没有涉及到操作或编程的修改不再列出。

第1章

1.1.1下载软件

Qt使用4.8.5版本
下载文件:qt-win-opensource-4.8.5-mingw.exe
Qt Creator使用2.8.0版本
下载文件:qt-creator-windows-opensource-2.8.0.exe


1.1.2安装软件

先安装Qt Creator 。双击运行qt-creator-windows-opensource-2.8.0.exe,然后按照默认设置安装即可(注意:如果要改变安装目录,那么安装路径中不能有中文)。当Qt Creator安装完成后,双击运行qt-win-opensource-4.8.5-mingw.exe安装Qt框架。整个过程也是按默认设置即可。在MinGW安装(MinGW Installation)界面需要指定MinGW的路径,这里提示需要使用GCC 4.4版本的MinGW。可以到Qter开源社区(www.qter.org)的下载页面下载MinGW,下载的文件是MinGW-gcc440_1.zip,下载完成后需要对其进行解压缩,笔者这里解压缩到了Qt的默认安装目录,如果这里都是使用的默认路径,那么应该填写C:\Qt\mingw,如图1-1所示。


1.2.1运行一个示例程序

       现在将Qt CreatorQt库进行连接。选择“工具→选项”菜单项,然后选择“构建和运行”项。因为这里是分别下载安装的QtQt Creator ,它们并没有自动关联,需要读者手动设置。先设置编译器,点击右上角的“添加”按钮,选择第一项MinGW,然后添加编译器路径,笔者这里是C:\Qt\mingw\bin\gcc.exe,完成后点击下面的“应用”按钮保存设置,如图1-3所示。下面添加Qt版本,点击右上方的“添加”按钮,然后选择qmake.exe的路径,笔者这里是C:\Qt\4.8.5\bin\qmake.exe,完成后再次点击“应用”按钮保存设置,如图1-4所示。最后到“构建套件(Kit)”中,可以看到已经有了一个“桌面(默认)”,这里双击它直接进行设置(当然也可以添加一个新的套件再进行设置),名称可以随意设置,这里修改为“Desktop Qt 4.8.5”,表明是Qt 4.8.5的桌面版;下面编译器一项已经默认选择了前面设置的MinGW;最后将Qt版本选择为前面添加的Qt 4.8.54.8.5)一项。为了以后可以在调试模式进行程序调试,这里需要指定调试器,读者可以到Qter开源社区(www.qter.org)的下载页面下载调试器,因为笔者使用的是Windows 7操作系统,所以下载的文件是qtcreator-gdb-7.4-MINGW32_NT-6.1-i686.tar,读者可以根据自己的系统选择下载,也可以到http://download.qt-project.org/official_releases/gdb/进行下载。下载完成后需要解压缩文件,笔者这里解压缩到了C:\Qt目录。然后回到Qt Creator中继续进行设置,点击调试器项后面的“编辑”按钮,在弹出的对话框中指定“二进制”路径,笔者这里是C:\Qt\qtcreator-gdb-7.4-MINGW32_NT-6.1-i686\gdb-i686-pc-mingw32.exe。设置完成后如图1-5所示。最后点击“确定”按钮保存退出,回到Qt Creator欢迎界面。


第2章

2.3.1纯代码编写程序与命令行编译


第五,设置显示中文。更改代码如下:
1          #include <QApplication>
2          #include <QDialog>
3          #include <QLabel>
4          #include <QTextCodec>
5          int main(int argc, char *argv[])
6          {
7              QApplication a(argc, argv);
8              QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
9              QDialog w;
10          QLabel label(&w);
11          label.setText(QObject::tr("Hello World! 你好Qt!"));
12          w.show();
13          return a.exec();
14      }
在第4行添加了QTextCodec类的头文件包含。QTextCodec类提供了文本编码的转换功能。第8行使用了QTextCodec类中的静态函数setCodecForTr(),用来设置QObject::tr()函数所要使用的字符集,就像第11行中所看到的那样,tr()函数可以使用指定的字符集来对文本编码进行转换。这里使用了QTextCodec::codecForName("UTF-8")指定使用“UTF-8”字符集进行编码,读者也可以根据具体环境设置其他字符集。
为了能够显示中文,需要设置字符集,然后使用QObject::tr()函数将字符串进行编码转换。其实tr()函数还可以实现多语言支持,这个在第9章国际化部分将会讲到。需要说明的是,setCodecForTr()函数最好的放置位置就是像程序中这样,放在main()函数中的QApplication对象下面。Qt程序中所有要显示到界面上的字符串最好都使用tr()函数括起来,而对于不是要显示到界面上的字符串中如果包含了中文,可以使用QString()进行编码转换,这需要在主函数中添加如下代码进行设置:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
       虽然使用这种方法可以很简单地实现中文显示,不过还是建议正规编写代码时全部使用英文,最后使用第9章讲到的国际化的方式来实现中文显示。

2.4.2项目文件

       下面来看一下2.1节中建立的helloworld项目的helloworld.pro文件的内容:
1          #-------------------------------------------------
2          #
3          # Project created by QtCreator 2013-08-07T23:10:24
4          #
5          #-------------------------------------------------
6           
7          QT      += core gui
8           
9          greaterThan(QT_MAJOR_VERSION,4): QT += widgets
10        
11       TARGET = helloworld
12       TEMPLATE = app
13        
14        
15       SOURCES += main.cpp\
16               hellodialog.cpp
17        
18       HEADERS  += hellodialog.h
19        
20       FORMS    += hellodialog.ui
21        
22       RC_FILE  += myico.rc
第1~5行是注释信息,说明这个文件生成的时间。第7行表明了这个项目使用的模块。
core模块包含了Qt非图形用户界面的核心功能,其他所有模块都依赖于这个模块;而gui模块扩展了core模块的图形界面功能。也就是说,如果不需要设计图形界面的程序,那么只需要core模块就可以了,但是如果涉及图形界面,那么就必须包含gui模块。其实所谓的模块,就是很多相关类的集合,比如所有与图形界面有关的类都在gui模块中,读者可以在Qt帮助中查看QtCore ModuleQtGui Module关键字。第9行是为了和Qt5兼容添加的一行代码,表明如果是Qt5版本,就添加QT +=widgets一行代码。第11行是生成的目标文件的名称,就是生成的exe文件的名字,默认的是工程的名字,当然也可以在这里改为别的名字。第12行使用app模板,表明这是个应用程序。第151820行分别是工程中包含的源文件、头文件和界面文件。第22行就是添加的应用程序图标的文件。这里这些文件都使用了相对路径,因为都在项目目录中,所以只写了文件名。
       这里还要提一下那个在项目文件夹中生成的.pro.user文件,它包含了本地构建信息,包含Qt版本和构建目录等。可以用记事本或者写字板将这个文件打开查看其内容。当使用QtCreator打开一个.pro文件时会自动生成一个.pro.user文件。因为读者的系统环境都不太一样,Qt的安装于设置也不尽相同,所以如果要将自己的源码公开,一般不需要包含这个user文件。如果要打开别人的项目文件,但里面包含了user文件,Qt Creator则会弹出提示窗口,询问是否载入特定的环境设置,这时应该选择“否”,然后选择自己的Qt版本即可,如图2-30所示。


第3章

49页,修改说明。

先在showChildDialog上右击,在弹出的菜单中选择“重构→Rename Symbol UnderCursor”,或者直接使用



第5章

第103页。
“这时先运行程序,然后从桌面上将一个文本文件拖入程序中。”
前面添加
“最后进入mainwindow.cpp文件,在构造函数中添加setAcceptDrops(true);一行代码,使主窗口可以接受放下事件。


第7章

1.        第139页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>

2.        第141页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>


3.        第143页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>


4.        第145页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>


5.        第147页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>


6.        第149页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>


7.        第150页,

#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
修改为:QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));


8.        第153页,将#include<QtCore/QCoreApplication>
修改为:#include <QCoreApplication>


9.        第154页,将QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
修改为:QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

10.    第166页,删除下面的内容:

当要在表达式中使用中文时,需要在main.cpp文件中添加头文件#include <QTextCodec>,然后再main()函数中添加如下一行代码:
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());


第8章

第177页,添加修改内容:

可以看到,当一个部件获得鼠标焦点后就会显示”更改为:“如果在WindowsXP系统中,当一个部件获得鼠标焦点后就会显示”



第9章

1.        第184页,在“第四步,使用…”这段前面添加一段:
该步也可以通过“工具→外部→Qt语言家→更新翻译(lupdate)”菜单项来快速完成,注意在使用该菜单项之前先保存所有修改过的文件。


2.        第187页,首先删除图9-2,然后添加修改内容:

输出信息如图9-2所示,这表明已经生成了.qm文件。另外在Qt Linguist中也可以使用File→Reelase和File→Release As这两个菜单项来生成当前已打开的.ts文件对应的.qm文件。

更改为:

这样就成功生成了.qm文件。也可以在QtLinguist中使用“文件→发布”和“文件→另外发布为”这两个菜单项来生成当前已打开的.ts文件对应的.qm文件。该步还可以通过Qt Creator的“工具→外部→Qt语言家→发布翻译(lrelease)”菜单项来快速完成。


3.        第188页,添加内容:

这里先加载了.qm文件(使用了相对路径),然后为QApplication对象安装了翻译。注意,这几行代码一定要放到创建部件的代码之前,比如这里放到了“MainWindow w;”一行代码之前,这样才能对该部件进行翻译。另外,有时可能因为部件的大小问题使得翻译后的文本无法完全显示,较好地解决方法就是使用布局管理器。


第12章

第284页,添加内容:

再到myglwidget.cpp文件中先包含#include<GL/glu.h>头文件,然后添加这3个函数的定义


第15章

第319页,将:

#include <QtCore/QCoreApplication>   修改为: #include <QCoreApplication>

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
修改为:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));



第17章

1.        第368页,添加内容:

这里还列出了编译驱动器插件和编写自定义的数据库驱动的方法。

更改为:

这里还列出了在各种平台上编译数据库驱动插件和编写自定义的数据库驱动的方法,读者也可以到Qter开源社区(www.qter.org)的书籍页面查看MySQL数据库驱动的编译教程。



2.        第377页,修改代码:

  QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
两行代码更改为:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

3.        第386页,修改代码:
#include<QtCore/QCoreApplication> 修改为:#include <QCoreApplication>




4.        第388页,修改代码:

  QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
修改为:QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

5.        第399页,修改代码:
#include<QtCore/QCoreApplication> 修改为:#include <QCoreApplication>



第18章

1.        第405页,修改代码:

QTextCodec*codec = QTextCodec::codecForLocale();
修改为:
QTextCodec *codec =QTextCodec::codecForName("UTF-8");



2.        第408页,删除内容。

可以输入一个网络文件地址然后点击“下载”按钮将其下载到本地,比如下载华军软件园上的劳拉方块游戏,可以使用如下URL地址:http://zzidc.onlinedown.net:82/down/laolafangkuaijin.rar



3.        第409页,修改代码:

ftp = new QFtp(this);
ftp->connectToHost("ftp.qt.nokia.com");
ftp->login();
ftp->cd("qt");

修改为:

ftp = new QFtp(this);
ftp->connectToHost("ftp.qt-project.org");
ftp->login();
ftp->cd("qt/source");


4.        第412页,修改内容:

text属性改为“ftp.qt.nokia.com”。   修改为: text属性改为“ftp.qt-project.org”。


第19章

1.       第446页,更改代码和内容:
原文:
       这里将stopped变量初始化为false。下面添加run()函数的定义:
void MyThread::run()
{
   qreal i = 0;
   while (!stopped)
       qDebug() << QString("in MyThread: %1").arg(i++);
   stopped = false;
}
       这里一直判断stopped变量的值,只要它为false,那么就一直打印字符串。下面添加stop()函数的定义:
更改为:
这里将stopped变量初始化为false。下面添加run()函数的定义:
void MyThread::run()
{
   qreal i = 0;
    while (!stopped) {
        qDebug() << QString("inMyThread: %1").arg(i);
        msleep(1000);
        i++;
    }
   stopped = false;
}
       这里一直判断stopped变量的值,只要它为false,就每隔一秒打印一次字符串。下面添加stop()函数的定义:

2.       第447页,在“19.2.2 同步线程” 前面添加内容如下:
在启动线程时调用了start()函数,然后设置了两个按钮的状态。在终止线程时,先使用isRunning()来判断线程是否在运行,如果是,则调用stop()函数来终止线程,并且更改两个按钮的状态。现在运行程序,按下“启动线程”按钮,查看应用程序输出栏的输出,然后再按下“终止线程”按钮,可以看到已经停止输出了。
       还有一种创建线程的方法,就是使用QObject::moveToThread()函数。例如:
class Worker : public QObject
{
     Q_OBJECT
public slots:
     voiddoWork(const QString ¶meter) {
         // ...
         emitresultReady(result);
     }
signals:
     voidresultReady(const QString &result);
};
classController : public QObject
{
     Q_OBJECT
     QThreadworkerThread;
public:
    Controller() {
         Worker*worker = new Worker;
        worker->moveToThread(&workerThread);
        connect(&workerThread, SIGNAL(finished()),
worker,SLOT(deleteLater()));
        connect(this, SIGNAL(operate(QString)),
worker,SLOT(doWork(QString)));
        connect(worker, SIGNAL(resultReady(QString)),
this, SLOT(handleResults(QString)));
        workerThread.start();
     }
    ~Controller() {
        workerThread.quit();
        workerThread.wait();
     }
public slots:
     voidhandleResults(const QString &);
signals:
     voidoperate(const QString &);
};
       这样WorkerdoWork()槽中的代码就可以在单独的线程中执行,使用这种方法可以很容易地将一些费时的操作放到单独的工作线程中来完成。可以将任意线程中任意对象的任意一个信号关联到Worker的槽上,不同线程间的信号和槽进行关联是安全的。

      



附录 Qt Creator键盘快捷键速查



一般操作的键盘快捷键

  
操作
  
快捷键
操作
快捷键
打开文件或项目
Ctrl+O
新建文件或项目
Ctrl+N
在外部编辑器中打开
Alt+V,Alt+I
选择全部
Ctrl+A
删除
Delete
剪切
Ctrl+X
复制
Ctrl+C
粘贴
Ctrl+V
重做
Ctrl+Y
打印
Ctrl+P
保存
Ctrl+S
保存所有文件
Ctrl+Shift+S
关闭窗口
Ctrl+W
关闭所有文件
Ctrl+Shift+W
关闭当前文件
Ctrl+F4
返回
Alt+向左键
前进
Alt+向右建
转到行
Ctrl+L
历史中下个打开的文件
Ctrl+Shift+Tab
跳转到其他分栏
Ctrl+E,O
历史中先前打开的文件
Ctrl+Tab
定位
Ctrl+K
切换到欢迎模式
Ctrl+1
切换到编辑模式
Ctrl+2
切换到设计模式
Ctrl+3
切换到调试模式
Ctrl+4
切换到项目模式
Ctrl+5
切换到分析模式
Ctrl+6
切换到帮助模式
Ctrl+7
问题输出窗格
Alt+1
搜索结果窗格
Alt+2
应用程序输出窗格
Alt+3
编译输出窗格
Alt+4
其他输出窗格
Alt+相应数字
激活书签窗口
Alt+M
激活文件系统窗口
Alt+Y
激活打开文档窗口
Alt+O
最大化输出窗格
Alt+9
输出窗格中下一个条目
F6
输出窗格中上一个条目
Shift+F6
激活项目窗口
Alt+X
全屏
Ctrl+Shift+F11
显示边栏
Alt+0
撤销
Ctrl+Z
切换到编辑模式
Esc
退出Qt Creator
Ctrl+Q




编辑相关操作的键盘快捷键



  
操作
  
快捷键
操作
快捷键
选中的文字自动缩进
Ctrl+I
折叠
Ctrl+<
展开
Ctrl+>
当前范围触发自动补全
Ctrl+空格
复制行
Ctrl+Insert
向下复制本行
Ctrl+Alt+向下键
向上复制行
Ctrl+Alt+向上键
从剪贴板历史中粘贴
Ctrl+Shift+V
剪切行
Shift+Delete
合并行
Ctrl+J
在当前行之前插入行
Ctrl+Shift+Enter
在当前行之后插入行
Ctrl+Enter
缩小字号
Ctrl+-
增大字号
Ctrl++
重置字号
Ctrl+0
使用Vim风格编辑
Alt+V,Alt+V
分栏
Ctrl+E,2
左右分栏
Ctrl+E,3
在新窗口打开
Ctrl+E,4
显示进度条细节
Alt+Shift+0
删除所有分隔
Ctrl+E,1
删除当前分隔
Ctrl+E,0
选择全部
Ctrl+A
移到段落结尾
移到段落开头
Ctrl+[
选中到段落末尾
Ctrl+}
选中到段落开头
Ctrl+{
当前行下移
Ctrl+Shift+向下键
当前行上移
Ctrl+Shift+向上键
当前范围触发快速修正
Alt+Enter
段落重新折行
Ctrl+E,R
选择段落上移
Ctrl+U
开启文字折行
Ctrl+E,Ctrl+W
切换选中区域的注释
Ctrl+/
标示空白
Ctrl+E,Ctrl+V
调整大小(设计模式)
Ctrl+J
栅格布局(设计模式)
Ctrl+G
水平布局(设计模式)
Ctrl+H
垂直布局(设计模式)
Ctrl+L
预览(设计模式)
Alt+Shift+R
切换书签
Ctrl+M
下个书签
Ctrl+.
上个书签
Ctrl+,
取得代码片段
Alt+C,Alt+F
粘贴代码片段
Alt+C,Alt+P
搜索被使用的地方
Ctrl+Shift+U
跟踪光标位置的符号
F2
重命名光标位置符号
Ctrl+Shift+R
在声明和定义间切换
Shift+F2
打开类型层次结构
Ctrl+Shift+T
切换头/源文件
F4
选中文本改为小写
Alt+U
选中文本改为大写
Alt+Shift+U
运行检查
Ctrl+Shift+C
查找/替换
Ctrl+F
查找下一个
F3
查找前一个
Shift+F3
查找下一个(选中的)
Ctrl+F3
查找前一个(选中的)
Ctrl+Shift+F3
查找并替换
Ctrl+=
打开高级查找
Ctrl+Shift+F
录制宏
Alt+(
停止录制宏
Alt+)
播放最近的宏
Alt+R
显示Qt Quick工具栏
Ctrl+Alt+空格
FakeVim中执行操作
Alt+V,相应数字



调试相关操作的键盘快捷键



  
操作
  
快捷键
操作
快捷键
开始或继续调试
F5
停止调试
Shift+F5
单步跳过
F10
单步进入
F11
单步跳出
Shift+F11
切换断点
F9
运行到选择的函数
Ctrl+F6
执行到行
Ctrl+F10
掉转方向
F12




项目相关操作的键盘快捷键



  
操作
  
快捷键
操作
快捷键
构建项目
Ctrl+B
构建所有项目
Ctrl+Shift+B
新项目
Ctrl+Shift+N
打开项目
Ctrl+Shift+O
打开构建套件选择器
Ctrl+T
运行
Ctrl+R




帮助相关操作的键盘快捷键



  
操作
  
快捷键
操作
快捷键
上下文相关帮助
F1
添加书签
Ctrl+M
帮助模式下激活书签
Ctrl+Shift+B
帮助模式下激活目录
Ctrl+Shift+C
帮助模式下激活索引
Ctrl+Shift+I
帮助模式下激活搜索
Ctrl+Shift+/
下一页
Alt+向右键
上一页
Alt+向左键



注:Ctrl+E,2等格式的快捷键是先同时按下CtrlE键,释放后再按下数字键2








回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2013-10-29 01:18:03 显示全部楼层
什么时候上市?
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-10-29 08:51:40 显示全部楼层
jeeyoo 发表于 2013-10-29 01:18
什么时候上市?

12月初吧。如果已经买了第一本了,就不用再买了,只是修订性再版!

点评

正想购买的时候看到第二版说明 "更换了所有图片,构建了所有代码,更改了上百处细节", 不知道该不该等.  发表于 2013-10-30 11:07
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-10-30 16:44:57 显示全部楼层
jeeyoo 发表于 2013-10-29 01:18
什么时候上市?

可以等的。不过如果急着学习也可以先买这个,后面会把二版更新内容和源码都公布的。而且二版具体上市时间也不好确定,出版社给的时间是12月初,但是真正可以买到也许会更晚。
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2013-11-5 19:55:12 显示全部楼层
等第二版再买
回复 支持 反对

使用道具 举报

累计签到:17 天
连续签到:1 天
2013-11-7 09:57:54 显示全部楼层
会增加Qt5的新东西吗?建议QML方面做详细深入的讲解。如果开发实战那本对QML有更深入的讲解,会再入一本,虽然已经都有了。。。。
回复 支持 反对

使用道具 举报

尚未签到

2013-11-11 08:59:10 显示全部楼层
希望能出版一本介绍Qt5的书,发现Qt4的程序没法在Qt5中直接运行,两个版本区别蛮大的
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-11-12 09:25:45 显示全部楼层
jakes 发表于 2013-11-7 09:57
会增加Qt5的新东西吗?建议QML方面做详细深入的讲解。如果开发实战那本对QML有更深入的讲解,会再入一本, ...

这个书只是讲Qt 4的,Qt 5以后计划会再单独出一本。
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-11-12 09:26:07 显示全部楼层
xCamel 发表于 2013-11-11 08:59
希望能出版一本介绍Qt5的书,发现Qt4的程序没法在Qt5中直接运行,两个版本区别蛮大的 ...

嗯。这个已经在计划中了。
回复 支持 反对

使用道具 举报

累计签到:74 天
连续签到:1 天
2013-11-13 11:26:14 显示全部楼层
赶紧出第二版   正等着买呢  谢谢
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-11-13 11:37:26 显示全部楼层
jqthely 发表于 2013-11-13 11:26
赶紧出第二版   正等着买呢  谢谢

呵呵,出版社正抓紧时间排版呢,他们给的时间是十二月初。
回复 支持 反对

使用道具 举报

累计签到:74 天
连续签到:1 天
2013-11-13 20:15:33 显示全部楼层
好的  谢谢   我相信第二版一定很棒
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-11-14 14:12:05 显示全部楼层
jqthely 发表于 2013-11-13 20:15
好的  谢谢   我相信第二版一定很棒

如果你没看过第一版,可以这么说。

不过要是买过第一版,就没有必要买第二版了,因为没有实质性的改动,只是版本修订!
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2013-11-16 12:58:57 显示全部楼层
????????????? ????????????????????
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-11-16 15:52:04 显示全部楼层
venliong 发表于 2013-11-16 12:58
????????????? ????????????????????

具体更新内容,会在第二版正式出版的时候更新出来的。
回复 支持 反对

使用道具 举报

累计签到:3 天
连续签到:1 天
2013-11-21 11:12:15 显示全部楼层
yafei感谢你的付出,所以我们收获啊!期待你的更新。发现写软件啊,还是真是个长久战,不过我还是从您的第一版书中收获不少。感谢yafei为中国软件做出的贡献。
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2013-11-21 16:52:45 显示全部楼层
老师的很多QT4的程序在QT5.1中编译提示错误 期待QT5的教程
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-11-22 10:07:25 显示全部楼层
carpho 发表于 2013-11-21 16:52
老师的很多QT4的程序在QT5.1中编译提示错误 期待QT5的教程

简单的可以先看下:
http://www.qter.org/forum.php?mod=viewthread&tid=903
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:1 天
2013-12-11 11:06:23 显示全部楼层
咋推迟了呢
回复 支持 反对

使用道具 举报

累计签到:1568 天
连续签到:1 天
2013-12-11 15:25:34 显示全部楼层
lengyuegg 发表于 2013-12-11 11:06
咋推迟了呢

出版社的问题,可能是因为年底了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了