谁了解QT编程工具啊,麻烦比较一下

谁了解QT编程工具啊,麻烦比较一下,第1张

我先来抛砖引玉吧

1)内嵌VC开发的话,可以使用visualstudio的各种C++功能,文本编辑/自动补全/调试等等和普通的C++开发差不多,gui界面会调用designer插件,这个vc/eclipse/kdevelop/qtcreator都一样。相对来说比较方便。但是因为visualstudio不支持并行编译(至少vsnet2008还不支持),因此编译较慢。如果是写了makefile,或者利用qt生成vc格式的makefile,那么qtgitorisorg上有一个项目叫jom,和nmake基本兼容,但是支持并行编译,这个只能在命令行里面用

2)eclipse,给我的感觉怎么说呢,就不像是给C/C程序员使用的IDE,它其实也就是用qt插件创建gui,在编译过程中插入moc/uic/r处理。编译速度要看是在windows下还是linux下,如果是wndows,eclipse使用的是mingw工具链,因此编译速度很慢。linux下用的是g工具链,因此速度较快

3)kdevelop分为3x版本的和4x版本的,3x版本的比较成熟,但是有些功能不太容易使用,比如一个很简单的添加已存在的文件到项目中的 *** 作,用kdevelop就是没有很直观的方式。不是很好用

4)qtcreator,我觉得比kdevelop和eclipse好用,比visualstudio2008当然还是差一些。比如它的文件的编码格式(gb2312/iso88159-1/utf-8/big5)之类的设置,有时候似乎没有生效,我用kate或者gedit打开之后发现qtcreator编码格式转换没有起作用。

这些工具在gui编码和qt特有的功能(信号/槽、属性、moc/uic/r)方面基本相同,都是调用qtdesigner插件。在编译速度方面,eclipse(win32)=QTCREATOR(WIN32MINGW)qtcreator>eclipse=kdevelop

1、有C/C++就可以了。

2、C++的库里面MFC写的GUI库,如果要看这个库的源码的话可以用得着,但是这个不是需要的基础知识。

3、不知道你说的学烂了是指你学的很精通了还是学疲了?如果是学生的话,后者很能理解;如果在从事工作,如前者话,那应该衣食无忧了。

编程这个东西,要用才行,才能深入理解,在项目中找到问题,才会知道,编程,可不仅仅是语法!

4、不要盲目的多学各种语言。在实际开发项目中,可能会短期使用没有用过的语言。特别是在大项目中,还会有各种脚本语言。以我最近的项目为例,短期内都用过C#,Ruby等平时都没用过的语言。所以,理解什么是编程语言才是王道!这,需要你的经验,别人说的不顶用。

编程好学,就是要多练习,抱书本不行。主要是就是逻辑,你的逻辑思维很严谨,发散型思维很强,就能编出好东西,数学基础好对编程有很大帮助。至于哪门语言,这要看你打算开发哪种类型的。但万变不离其宗。就像你学用毛笔,钢笔,铅笔,五笔字形来写文章一样。不在于哪种你用的熟练。重要的是文章的内容有深度。所以编程也一样。无论开发哪方面,要有很好的编程思想。至于用什么语言来编,拿本书看看再练练就会了。不用把主要精力放到学习具体的某个语言上。

至于编出熟练的小程序要用多久,这要看编的程序得用到多少编程的知识。假如在屏幕上显示“HELLO WORLD”这行字。那么看书10分钟之内就能学会。因为他只用到了输出命令。如果程序用的东西更多,那相对时间也就更长。另外还要看程序的逻辑复杂性。假如说一个程序用的就是前5章学到的东西,但其实现的逻辑很复杂,当然也要会花时间去考虑逻辑结构。例如猜4位数字的小游戏,华为生产的小灵通机子上就有。用C语言编,把指针这章学完就可以编出来了。这就要看你掌握的速度了。

先去官网下一个QT库,QT可以用VS编译,也可以用QT自己的编译器,下载的时候看清楚。如果是VS的下载VS版本,如果想用gcc编译的就装MinGW,下载时看清楚版本和编译器。不论装哪一个都会安装QT Creator。

如果单纯做QT的程序,建议直接用QT自己的编辑器QT Creator,里面整合了所有QT需要的开发工具,用VS反而麻烦。

还有就是做界面程序,和控制台还是有很大差异的,不需要分成控制台和界面2个部分。界面是你运行结果的直观反映,直接就显示在图形界面中了(相当于自己做了一个控制台)。

到QT吧里,里面有很多QT入门教程自己找找看吧。

QT下载网址:>

学好C++与QT开发一般的客户端是没有问题了剩下就是专业的知识 比如你要是做应用就学应用方面的做工控就学工控学医疗就学那个行业中的知识大型项目需要锻炼你单纯的只是会了语言还是什么也不会做。多做一些项目锻炼一下比如你做摄像头吧也要了解H264编码

这个问题的确是够大的,Qt的代码规模在整个开源世界里也是名列前茅的,这么大的项目其中的精华是非常多的,很难说得全面,实际上我对Qt也不是完全了解,里面还有很多我不熟悉的东西。

首先,我想谈的是 signal/slot,Qt算是发明了signal/slot,这个思想也被其他一些框架语言借鉴了。

谈signal/slot之前先来谈谈C++的缺欠,这个问题也被讨论很多了,这里只谈一点,C++的设计目标是面向对象语言,它不仅提供了对象的定义和构建的方式,也定义了对象间的关系,比如 继承 派生 聚合,但是它没有提供对象间通信和共享数据的方式,这个缺点在一般程序的开发上不算个大问题,我们可以自己简单实现,但是对于GUI开发,这个缺点就被放大了很多倍。GUI上的对象实在太多,窗口是对象,布局是对象,定时器是对象,而且对象间有错综复杂的关系,通信和数据交换非常频繁,比如按钮按下要通知父窗口或容器对象,滚动条变化了要通知列表对象。这种数量庞大的对象以及复杂的通信关系,可不是自己搞个简单的实现就能解决的。

说到通信和共享,其实他们是一回事,共享很多时候就是为了通信,而C++里要通信就必然要共享。

比如,一个类实例拥有另一个的指针,就可以访问对方的数据,调用对方的方法了,这实际就是共享了一个指针,这个类指针也是另一个对象的this。访问数据和调用方法其实都是通信,把对方的数据拿过来,把自己的数据送过去,交换数据就是通信。

在C++里,由于没有GC,管理大量原生指针是极其危险的,对象的生命周期不可控,野指针的出现概率会很高,大型C++ 的GUI项目参与开发的人数众多,很难保证都不犯错。

那么用观察者模式呢?其实也一样,还是共享了IObserverXXX指针。

那么发消息行不行呢?比如 MFC那样,可以,但是本质上还是共享了窗口句柄,否则消息发给谁呢?而且还带来另外的问题,就是类型安全,消息的参数是无法类型安全的。

Qt作为大型GUI项目的Framework,它必须解决这个问题,否则这个程序是写不大的,写大了就会问题层出不穷。

来看一段代码,看看Qt 的解决方案:

Window::Window()

{

QPushButton b = new QPushButton(this);

connect(b, SIGNAL(clicked()), SLOT(on_button_clicked()));

}

Window::on_button_clicked()

{

QPushButton b = qobject_cast<QPushButton>(sender());

b->setText("clicked!");

}

这段代码,通过Qt的signal slot机制,把QPushButton的点击事件连接到了Window的on_button_clicked响应函数上。

Window 和 QPushButton并没有互相保存对方指针,QPushButton的指针b 只是个局部变量,用过之后很快销毁,Window和QPushButton实现了通信,数据共享,事件响应,但是却没有共享指针,而且他们不受对方的生命周期影响,无论谁先销毁,这段代码都不会出错。

这种方式还是类型安全的,当signal和slot的类型不匹配的时候 connect是会报错的。

有人会说,我们用智能指针不就好了。好啊,智能指针你不会自己写吧,那么用boost?boost里能创建窗口吗?不能吧,还是要其他GUI库的,把两个异构的Framework撮合到一起也不是轻而易举的。再说了Qt出来的时候,别说Boost,STL都还没有呢。

signal/slot为对象间通信提供了非常灵活方便的实现,如果你只关心一个signal那就可以只connect一个,可以多个slot连接同一个signal,也可以一个slot连接到多个signal,Qt会负责管理连接关系和对象生命周期,对象销毁时会自动断开连接。

Qt为了实现signal/slot也是付出代价的,在无法改变C++语法的情况下,只能通过moc预编译器来扩展关键字。这大概是独一无二的实现方式了,后来的signal/slot实现要不用C++ template,或者发明种语言直接做到语法里,比如C# delegate。

最后总结下,Qt的signal/slot是为了解决对象间通信问题,同时避免共享指针造成的内存野指针和对象生命周期问题。

以上就是关于谁了解QT编程工具啊,麻烦比较一下全部的内容,包括:谁了解QT编程工具啊,麻烦比较一下、想学习QT编程,现在C/C++语法都学烂了!不知道学习QT还需要什么基础知识需要先学习MFC编程、学编程好学吗,难学吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9775982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存