2011-01-28 107 views
0

诺基亚Qt中的基本概念是什么?诺基亚Qt中的基本概念是什么?

在进入诺基亚Qt框架之前我想知道些什么?

任何人都可以帮助我吗?

我是诺基亚Qt的新手。 在此先感谢。

+2

这是一个非常广泛的问题。首先阅读[精彩的Qt文档的介绍部分](http://doc.qt.nokia.com/latest/gettingstartedqt.html),然后如果您仍然不清楚哪些内容可以提出更具体的问题。 – 2011-01-28 08:12:03

回答

13

Qt是一个巨大的框架,具有用于处理GUI,网络,数据库和各种事物的库。这是非常有据可查的,所以去诺基亚的网站上看看How to Learn Qt。话虽这么说,这里有一些基本概念:

  1. Qt是一个框架。这意味着你组织你的代码来回应事件。最重要的是,你没有“主循环”。你main一般是这样的:

    QApplication app(argc, argv); 
    MyMainWindow win; 
    
    win.show(); 
    
    return app.exec(); 
    
  2. 信号和槽。 Qt使用信号和插槽的概念以完全分离的方式连接程序的不同部分。必须的信号首先连接到一个槽:

    connect(sender, SIGNAL(theSignal(int)), receiver, SLOT(theSlot(int))); 
    

    然后,当有史以来sender“发射”的信号(使用,例如,emit theSignal(0)),然后Qt的安排receiver->theSlot(0)被调用。这种安排是通过“元对象编译器”来实现的,该编译器是一个单独的程序,用于生成可编译并链接到程序的代码。

    Qt使用信号和插槽来响应GUI事件。因此,当用户点击“文件 - >打开”菜单项时,当你决定你的程序需要做什么时,你需要编写一个插槽。 Qt使用元对象编译器(moc)预处理您的代码并在幕后生成大量机器以确保此插槽可以连接到信号。在MyMainWindow头,你会碰到这样的:

    class MyMainWindow : public QMainWindow 
    { 
        Q_OBJECT 
        public: 
        MyMainWindow(); 
        public slots: 
        void on_fileOpen_activated(); 
        signals: 
        void mySignal(int n); 
    }; 
    

    Q_OBJECT宏是必要的moc识别类,并生成都为你的机器。就您的代码而言,插槽只是一种常规方法。它可以是公共的,受保护的或私人的。它可以正常调用。唯一的区别是您可以使用connect将信号连接到它。

    信号是另一回事。 moc为您实现了所有的信号,因此,继续上述示例,MyMainWindow.cpp将不包括mySignal的定义。

Qt是一个非常大的框架,你可以很容易地只使用你需要的部分。慢点。不要担心高级功能,或者看起来太难的事情。找出你想做什么,然后尝试做到这一点。在线搜索。 Qt拥有一些最广泛的文档。祝你好运!

4

只要你了解面向对象编程,你就可以开始了解足够的知识。 Qt中主要的C++对象是信号和插槽。如果你阅读文档,他们会很快开始理解。