对于QT与linux的迷惑,求前辈赐教!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于QT与linux的迷惑,求前辈赐教!相关的知识,希望对你有一定的参考价值。
我的问题是这样的,嵌入式产品的图形界面是用QT编写的吗?然后我百度了一下QT,知道它是C++的一个写用户界面的库,那嵌入式应用程序大部分不都是用C语言写的,那就是说一个完整的嵌入式程序(含界面的)就是 C语言+QT ??那QT是属于C++又不是C,如何混合起来写出一个完整的嵌入式程序? 我的问题可能描述得有点云里雾里,希望理解我的意思的前辈解释解释啊,小弟是初学者 刚刚接触 感激不尽哦!
我也是学嵌入式的,说嵌入式的大部分语言是用C写的应该指的是用C语言直接操作硬件完成硬件驱动或操作系统一样的功能。也就是说用C写的嵌入式程序一般是最底层的直接和硬件打交道的。我们也知道Qt这东西只能跑在操作系统上,因此当你决定用Qt开发界面的时候C部分你就不用管了,你也管不来。除非你自己用C也写一个操作系统并让Qt也来支持它。
当使用Qt的编写界面的时候应该就是你说的C++与C混编的情况了吧,在这种情况下身为操作系统的C程序提供了很多API函数让Qt来调用,就是说我们在C++里调用了用C编写的程序。但是我们不用管这种调用是怎么进行的,因为Qt已经帮我们完全封装好了。追问
有点懂你的意思了,那比如火车站的自动售票系统,这也是嵌入式软件吧,因为界面是用QT,QT是属于C++的,整个自动售票软件就是用QT来写界面,其它的实现用C++这个语言来编写,然后过程中的一些底层的调用自然是用C语言写的,我这样理解对吗?
追答对,就是这种意思。
追问那就是说,嵌入式的应用层软件是用C++写的,底层点的比如驱动程序就是C写的,是吧?
追答一般底层的驱动是汇编加C。但是应用层的就五花八门了,C,C++,java,object-c............
追问那我又不懂了,应用层也可以用C,那如果用C的话那它的界面呢?难道是用GTK。。。
追答界面和C++并没有必然的联系,C也可以写界面,你可以直接调用API来编程。但是这难度太大了。因此才有了那么多的GUI库帮我们封装这些API,让编程变得更简单。我就曾经试过用C语音直接调用window API 写界面。但是一个什么都没有的界面就花了两三百行代码.........
参考技术A C控制硬件,C++做界面,当中用通信接口链接,这个接口是Qt做。 参考技术B 一样的问题Qt每天一例9.迷惑的子父类转换
猜猜输出的打印是啥
#include <QCoreApplication>
#include <QtDebug>
class Father
public:
Father()
qDebug()<<"father make";
;
~ Father()
qDebug()<<"father dead";
;
;
class Son : public Father
public:
int cake=666;
Son():cake(23333)
qDebug()<<"son make";
;
~ Son()
qDebug()<<"son dead";
;
void shout()
qDebug()<<"son shout"<<cake;
;
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
Father *f = new Father;
static_cast<Son*>(f)->shout();
return a.exec();
90%你猜错了
father make
son shout -1414812752
为什么?
因为static_cast只是个类型转换,所以cake是个未初始化值。
以上是关于对于QT与linux的迷惑,求前辈赐教!的主要内容,如果未能解决你的问题,请参考以下文章