诺基亚Qt的基本概念是什么?
在进入诺基亚Qt框架之前,我想知道些什么?
有人可以帮助我吗?
我是诺基亚Qt的新手。 提前谢谢。
答案 0 :(得分:13)
Qt是一个庞大的框架,具有用于处理GUI,网络,数据库和各种事物的库。记录非常详细,请访问诺基亚网站上的How to Learn Qt。话虽如此,这里有一些基本概念:
Qt是一个框架。这意味着您可以围绕响应事件来组织代码。最重要的是,你没有“主循环”。您的main
通常如下所示:
QApplication app(argc, argv);
MyMainWindow win;
win.show();
return app.exec();
信号和插槽。 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有一些最广泛的文档。祝你好运!
答案 1 :(得分:4)
只要您了解面向对象编程,您就会非常了解入门。来自Qt的C ++对象的主要补充是信号和插槽。如果您阅读文档,它们将很快开始有用。