对于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的迷惑,求前辈赐教!的主要内容,如果未能解决你的问题,请参考以下文章

毕业一年不到,做Android开发现在我很迷茫?求前辈指点

java web 问题!跪求大神前辈们!我快疯掉了!

excel用VBA连接数据库为啥我的程序错误呢?新手上路,求各位前辈指点!

跟尹成前辈学C/C++ 001

谁能通俗的解释回调函数?

关于网络通信原理的困惑,求网络达人赐教,万分感谢!!!