yafeilinux 发表于 2013-3-24 20:37:02

Qt系列书籍售后专用贴(问题、建议、勘误)

关于该系列书籍的介绍,请查看 Qt系列书籍专题 ,如果需要下载源码、课件,请到下载页面。


书友注意

QQ书友群:190740635(申请时请注明书友)
static/image/hrline/4.gif

勘误:

一、《Qt Creator快速入门》(第3版)第12章:

所有着色器代码前添加:
“# version 330 \n”


例如:
const char *vsrc =
            "#version 330                              \n"
            "void main() {                           \n"
            "   gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n"
            "}   


例12-6中修改:
// 创建顶点着色器
    QOpenGLShader *vshader = new QOpenGLShader(QOpenGLShader::Vertex, this);
    const char *vsrc =
             "#version 330                           \n"
            "in vec4 vPosition;                        \n"
            "in vec2 vTexCoord;                        \n"
            "out vec2 texCoord;                        \n"
            "uniform mat4 matrix;                      \n"
            "void main() {                           \n"
            "   texCoord = vTexCoord;                  \n"
            "   gl_Position = matrix * vPosition;      \n"
            "}                                       \n";
    vshader->compileSourceCode(vsrc);
    // 创建片段着色器
    QOpenGLShader *fshader = new QOpenGLShader(QOpenGLShader::Fragment, this);
    const char *fsrc =
             "#version 330                              \n"
            "uniform sampler2D tex;                     \n"
            "in vec2 texCoord;                        \n"
            "out vec4 fColor;                           \n"
            "void main() {                              \n"
            "   fColor = texture(tex, texCoord);      \n"
            "}                                          \n";
    fshader->compileSourceCode(fsrc);

二、《Qt Creator快速入门》(第3版)421页:

②将“用户名”标签后的Line Edit的objectName属性改为userNameLineEdit,其text属性改为qtertest/qtftptest0,placeholderText属性修改为“请输入用户名”,toolTip属性改为“默认用户名请使用:anonymous ,此时密码任意”;      ③将“密码”标签后的Line Edit的objectName属性改为passWordLineEdit,其text属性改为pjD0lUUv6femyodL8a1wrJBcZYaoDG4t,echoMode属性选择为Password,placeholderText属性修改为“请输入密码”;


三、《QML和Qt Quick快速入门》创建Qt Quick Application项目没有qmake选项的解决办法

如果读者下载的Qt Creator的版本是10.x,那么在创建Qt Quick Application项目时会发现没有qmake选项。解决办法如下:
https://files.qter.org/forum/202306/20/131209qo6l3cotqo6fjhzt.png.thumb.jpg    https://files.qter.org/forum/202306/20/131210ylgpv00f0vzpfqfw.png.thumb.jpg

方法一:不再使用Qt Quick Application项目模板,而是选择其它项目中的Empty qmake Project,这样会创建一个qmke空项目,然后自己手动往里面添加各种文件。

https://files.qter.org/forum/202306/20/131440lwwluyxuuwdy1wtf.png.thumb.jpg


方法二:下载使用老版本的Qt Creator,比如9.x。

1、下载地址:https://download.qt.io/official_releases/qtcreator/9.0/9.0.2/
https://files.qter.org/forum/202306/20/131147o734kza2x3cp45y3.png.thumb.jpg
2、配置Qt开发套件

https://files.qter.org/forum/202306/20/131209iz8jcx0zbk7iqwjl.png.thumb.jpg

https://files.qter.org/forum/202306/20/131209i0zmabiru055zbhf.png.thumb.jpg

以后使用时不要选择错了:
https://files.qter.org/forum/202306/20/131210ydt6ripqqtltd3jr.png.thumb.jpg


static/image/hrline/4.gif
以下为早期内容:

最新Qt 4.8版本安装:流程

[*]因为书中版面限制,所以代码注释不是很多。不过源码中有详细的注释,请大家下载源码进行参考学习!
[*]下载Qt Creator 2.5.0及以后版本的童鞋,需要手动下载MinGW,请点击这里(包含使用教程):下载
[*]如果在代码中使用tr()函数设置界面上显示中文出现乱码,请在主函数中使用:QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));



对于是否需要使用Qt 5的建议:

因为Qt 5已经推出了,所以初学者又开始出现了那个选择开发工具的困扰。
到底是使用Qt 4呢,还是Qt 5呢?毕竟Qt 5是新的,我又是刚开始学,还是学习最新的技术吧!
       很多初学者都有这样的思想。其实,Qt 5是从Qt 4发展而来的,这就像学习C++ 到底是否需要学习C一样,虽然完全可以直接学习前者,不过那样基础毕竟不牢靠,别人说的很多东西你可能也不知道在什么地方出现的。而且Qt 5现在还没有很好的文章教程,网上全是Qt 4的内容,初学者想自学,那问题可以说是滔滔不绝啊!这里想告诉大家,如果是初学者,真没必要用Qt 5来学习Qt 4的内容,虽然官方一直说Qt 4程序可以很容易移植到Qt 5,但实际上会出现很多小问题。对于初学者而言,快速学习知识才是最重要的,而不是浪费时间来搞环境。因为大家对很多东西还不是很了解,Qt 4已经够庞杂了,如果再和Qt 5掺和一起,我想,大家又会迷茫了,不知Qt如何学起了。

      很多公司现在还在用Qt 2,Qt 3呢,所以说不是最新的就是最好的。还是那句话,适合的东西才是最好的。这里不是说Qt 5不好,只是,毕竟它跟Qt 4的框架都不同了,如果我们用不到它的新功能,而只是为了学习Qt编程,那么现在没必要用它。等我们掌握好Qt 4以后,了解了它的框架,然后再去学习Qt 5,这样只需要花费很少的时间来查看两者的区别即可,大体程序还是一样的。

       如果是学习《Qt Creator快速入门》,还是建议下载书中使用的Qt和Qt Creator版本来学习,这样可以很快完成学习任务,尽量避免出错。等自己已经有了一定的知识积累之后,并且是需要使用高级版本的Qt的功能的时候,再去使用新版本的Qt。




对于本书的任何疑问、建议、书中勘误,请进行回帖!











biewenwoaaaa 发表于 2017-9-18 19:43:02

qt5.9.1 开发环境下,第三版P295页,编译后提示
QOpenGLShader::compile(Vertex): ERROR: 0:1: 'in' : storage qualifier supported in GLSL ES 3.00 only

*** Problematic Vertex shader source code ***
#line 1
in vec4 vPosition;                        
void main() {                           
   gl_Position = vPosition;               
}                                       

***
QOpenGLShaderProgram::attributeLocation(vPosition): shader program is not linked
QOpenGLShaderProgram::attributeLocation(vPosition): shader program is not linked
QOpenGLShaderProgram::attributeLocation(vPosition): shader program is not linked
不知为什么,以及怎么办

程默的叛逆者 发表于 2017-3-2 20:03:37

《Qt Creator快速入门》第三版,书中16-1,16-2,16-3示例代码包含头文件时,右括号用错,第357页第二段代码,有一处等于符号写错。

kgp0213 发表于 2013-5-21 15:15:41

《Qt Creator快速入门》勘误:
P35页:从下数第13和17行代码参数有误(QWidget *widget=new QWidget(0,Qt::Dialog);),根据书中所列代码得不到后文的运行结果。

yafeilinux 发表于 2013-5-21 18:37:52

kgp0213 发表于 2013-5-21 15:15 static/image/common/back.gif
《Qt Creator快速入门》勘误:
P35页:从下数第13和17行代码参数有误(QWidget *widget=new QWidget(0,Qt:: ...

P35是指第35页吗,这里没有对应的代码啊?请指明是哪个源码?谢谢!

姚江 发表于 2013-5-22 20:41:31

《Qt Creator快速入门》建议

P24页代码段里第11行

在我的电脑上直接使用tr出现的是乱码,然后,建议使用trUtf8~

PS:我的电脑是win7旗舰版64位的,Qt版本4.7.2,Qtcreator 版本2.7.0

yafeilinux 发表于 2013-5-22 20:45:49

姚江 发表于 2013-5-22 20:41 static/image/common/back.gif
《Qt Creator快速入门》建议

P24页代码段里第11行


嗯。如果出现乱码,那么就用:QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8″));

期飞 发表于 2013-6-20 11:31:34

您好,我看的是您的《Qt quick》那本书
其中有一个关于信号交互QML + C++的例子貌似用不了了
// MyItem.qml
import QtQuick 1.0

Item {
   width: 100; height: 100

   MouseArea {
         anchors.fill: parent
         onClicked: {
             myObject.cppMethod("Hello from QML")
             myObject.cppSlot(12345)
         }
   }
}

class MyClass : public QObject
{
   Q_OBJECT
public:
   Q_INVOKABLE void cppMethod(const QString &msg) {
         qDebug() << "Called the C++ method with" << msg;
   }

public slots:
   void cppSlot(int number) {
         qDebug() << "Called the C++ slot with" << number;
   }
};

int main(int argc, char *argv[]) {
   QApplication app(argc, argv);

   QDeclarativeView view;
   MyClass myClass;
   view.rootContext()->setContextProperty("myObject", &myClass);

   view.setSource(QUrl::fromLocalFile("MyItem.qml"));
   view.show();

   return app.exec();
}

这个例子测试无法通过 P248页

我在反复修改之后出现了我在这里提到的问题【http://www.qter.org/forum.php?mod=viewthread&tid=295&extra=page%3D1】

希望您来解答 :)

yafeilinux 发表于 2013-8-9 16:50:21

wuming123057 发表于 2013-8-9 16:48 static/image/common/back.gif
《Qt Quick开发实战精解》建议
1 希望能基于Quick 2重新写
2 希望能加入使用QML开发桌面程序这一块(现在Qt ...

嗯。等后面再版的时候会考虑的。谢谢你的建议。

tm7998 发表于 2013-8-30 22:01:19

请问《Qt Creator快速入门》里例子3-4为何运行不出结果呢?就是点击运行后不显示任何窗口,我把下载的原代码运行了一下,也是不显示

yafeilinux 发表于 2013-9-2 14:04:02

tm7998 发表于 2013-8-30 22:01 static/image/common/back.gif
请问《Qt Creator快速入门》里例子3-4为何运行不出结果呢?就是点击运行后不显示任何窗口,我把下载的原代 ...

请说一下你的环境,我这里测试没有问题的。

tm7998 发表于 2013-9-5 06:27:15

:)嗯,是环境问题,已经解决了,谢谢啊

kgp0213 发表于 2013-9-27 11:07:40

xflcx1991 发表于 2013-6-8 16:42 static/image/common/back.gif
我想他指的是第39页QWidget和QLabel新建对象的两条语句。改为只用一个参数0的构造函数即可。 ...

没错就是39页,
从下往上数
13行参数应该为 (0,0,0)
17行................(0,0)

xinkexue 发表于 2013-11-12 20:00:54

13楼说的对,这是个小错误

xinkexue 发表于 2013-11-14 08:25:51

本帖最后由 xinkexue 于 2013-11-14 08:33 编辑

Qt Creator快速入门里46页,我自己添加代码结果报错,代码就是书上写的第一段

加上MyWidget::~MyWidget(){    delete ui;}就可以了,但是书里没写

colin4124 发表于 2013-12-27 23:24:49

本帖最后由 colin4124 于 2013-12-28 22:20 编辑

第 39 页,QLabel *label = new QLabel(0, Qt::SplashScreen); 应该为 QLabel *label = new QLabel(0, Qt::Dialog);否则看不到图 3-2 的效果。另外,源码 3-1\myWidget 的代码中 23行的label2->show();应该为widget->show(); 麻烦作者确认下,给个答复。

yafeilinux 发表于 2014-1-9 22:06:58

kgp0213 发表于 2013-9-27 11:07 static/image/common/back.gif
没错就是39页,
从下往上数
13行参数应该为 (0,0,0)


这个在二版中已经更改:


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    // 在代码中可以使用中文字符串
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

    // 新建QWidget类对象,默认parent参数是0,所以它是个窗口
    QWidget *widget = new QWidget();
    // 设置窗口标题
    widget->setWindowTitle(QObject::tr("我是widget"));
    // 新建QLabel对象,默认parent参数是0,所以它是个窗口
    QLabel *label = new QLabel();

yafeilinux 发表于 2014-1-9 22:09:05

xinkexue 发表于 2013-11-14 08:25 static/image/common/back.gif
Qt Creator快速入门里46页,我自己添加代码结果报错,代码就是书上写的第一段

加上MyWidget::~MyWidget(){ ...

嗯,如果按照书上来做,第一步是新建Qt Gui应用,这么生成的默认代码上就有MyWidget::~MyWidget(){    delete ui;}的,所以书上没有写出来。

zhuce0001 发表于 2014-1-23 20:00:29

《Qt Creator快速入门》P38页,图3-1,从QFrame直接派生的QSokutter应该为QSplitter吧,我用的是qt5.1,不知道qt4中有没有QSokutter这个类?

yafeilinux 发表于 2014-1-26 12:53:53

zhuce0001 发表于 2014-1-23 20:00 static/image/common/back.gif
《Qt Creator快速入门》P38页,图3-1,从QFrame直接派生的QSokutter应该为QSplitter吧,我用的是qt5.1,不 ...

嗯,是的,这是笔误!感谢指出该错误!

zhuce0001 发表于 2014-2-18 20:47:51

《Qt Creator快速入门》P81页,图5-1,QWidget类下少一个表示继承关系的箭头

yafeilinux 发表于 2014-2-18 21:07:57

zhuce0001 发表于 2014-2-18 20:47 static/image/common/back.gif
《Qt Creator快速入门》P81页,图5-1,QWidget类下少一个表示继承关系的箭头

嗯,感谢支持!
页: [1] 2 3 4 5
查看完整版本: Qt系列书籍售后专用贴(问题、建议、勘误)