版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、讲义纲要,Qtopia集成开发环境搭建 基础窗口部件Qwidget 信号和槽 事件处理,1,学习交流PPT,Qt概念,Qt是挪威Trolltech公司的旗舰产品,作为跨平台开发框架,是开源KDE桌面的基石. Google Earch,Skype,Opera,Adobe Photoshop Element等著名软件都是基于Qt编写的.目前Qt最新版本为4.3.4 和java的”一次编写到处运行”所不同的是,Qt是源代码级的跨平台一次编写到处编译.一次开发的Qt应用程序可以移值到不同平台.目前Qt支持的平台有:Mac,Windows NT/2000/XP/Vista,unix,linux,嵌入式l
2、inux,2,学习交流PPT,Qt和Qtopia之间的关系,Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。 Qt/E(Qt/Embedded)是用于嵌入式Linux系统的Qt版本。Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中。 Qtopia是一个构建于Qt/E之上的类似桌面系统的应用环境。相比之下,Qt/E是基础类库。 Q
3、topia Core:就是原来的Qt/E,大概从Qt 4开始改名,把Qtopia Core并到Qtopia的产品线中去了。但实际上Qtopia Core就相当于原来的Qt/E,仍然作为基础类库。,3,学习交流PPT,Qtopia安装,从网站上下载的qt文件qtopia-2.2.0.tar.gz,拷贝到一个单独目录中.推荐放在opt目录下单独解压tar -zxvf qtopia-2.2.0.tar.gz 建立两个目录arm_qtopia和x86_qtopia目录把源码分别解压到两个目录中,后面我们会对其分别编译出x86仿真版和arm交叉编译版本 qtpioa安装之前需要下载3个补丁包并安装后才能
4、正确编译,4,学习交流PPT,Qtopia安装,编译Qt库,并且连编实例程序、教程和工具(比如Qt设计器),就像下面这样 在解压目录中输入 ./configure -qte -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g+-exceptions -no-qvfb -xplatform linux-arm-g+ -tslib -qpe edition pda -displaysize 240 x320 -fontfamilies helvetica fixed mic
5、ro smallsmooth smoothtimes unifont -xplatform linux-arm-g+ -luuid -qt2 -no-opengl -no-xft -dqt -no-xft -thread该命令会自动检测你目前linux操作系统具体配置情况 执行make命令生成qt和qtopia。 执行make install系统会把编译好的所有库文件拷贝到$QPEDIR/image目录下 在你主机中创建如下脚本文件中设置一些环境变量如下 export QTDIR=/opt/qte/arm_qtopia/qtopia2.2.0/qt2 export QPEDIR = /opt/
6、qte/arm_qtopia/qtopia2.2.0/qtopia export PATH=$QTDIR/bin:$QPEDIR/bin:$PATH export QMAKESPEC= $QPEDIR/mkspecs/qws/linux-arm-g+ export HOME=opt/qte/arm_qtopia/qtopia2.2.0/image/root export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH,5,学习交流PPT,有关Qt环境变量,QMAKESPEC:这个必须设置为你所使用的系统的平台和编译器的组合。举例来
7、说,加入你使用的是Windows和Microsoft Visual Studio,你应该把环境变量设置为win32-msvc。如果你使用Solaris和g+,你应该把环境变量设置solaris-g+。 QTDIR:这个必须设置到Qt被(或者将被)安装到的地方。比如,/opt/qte/arm_qtopia/qtopia2.2.0/qt2一旦环境变量被设置到qmake目录,$QTDIR/qmake QPEDIR:这设置为Qtopia的实际安装目录,6,学习交流PPT,Qt主要开发工具,Kdevelopt IDE KDelvelopt 是Linux下开源IDE,目前最新版本为3.5.3,它的优点是专
8、门为linux下编写c+的开发工具有速度快易调试等特点.但是没有代码职能感知功能 Eclipse + C+Developt Tool(CDT)+qt插件 Eclipse是java开发的IDE工具.它能够通过插件方式支持多种语言如:c+,java,c.要运行Eclipse必须先安装jre.具有代码智能感知功能 Qdevelopt IDE QDevelop是专门用于Qt4开发的IDE环境。QDevelop基于Qt4核心,需要安装gcc编译器(windows为MinGW),还需要gdb提供调试功能和ctags实现代码补全功能。QDevelop目前支持英语、法语、德语、荷兰语、波兰语、西班牙语、中文、
9、俄语、意大利语和乌克兰语。QDevelop是和Kdevelop无关的项目。它主要专注于提供Qt的IDE开发环境。虽然还不完善,但是发展很快,并且跨平台。QDevelop和KDevelop具有完全不同的源代码。,7,学习交流PPT,Qt体系架构,Qt的整个设计都是以单根继承为主这跟java相同.所谓单根继承就是说所有的Qt类都有一个共同的祖先都是QObject类 QObject类后面有三个大的子类分别负责不同的功能它们是: QApplicaton:类管理图形用户界面应用程序和控制台程序的控制流和主要设置 QWidget:是所有用户界面对象的基类,负责管理图形界面 QLayout:负责管理所有图形
10、界面的摆放方式,8,学习交流PPT,qmake工程文件,工程文件里包含了qmake建立你的应用程序(或者库,插件)所需要的所有信息。你的工程所需的资源通常通过一系列的声明语句来描述,而简单的控制结构,可以实现在不同的平台和环境下,执行不同的编译流程。 qmake工程文件是以.pro为扩展名,9,学习交流PPT,qmake概述,qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。 手写 Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关
11、心他们的代码。 Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具.当Qt被连编的时候,默认情况下qmake也会被连编。 qmake使用储存在项目(.pro)文件中的信息来决定Makefile文件中该生成什么。,10,学习交流PPT,qmake工程文件示例,TEMPLATE = app TARGET =Hello world DEPENDPATH += . INCLUDEPATH += . SOURCES += hello.cpp HEADERS+ = hello.h FORMS += charGame.ui test_dynmaic.ui CONFIG += qt
12、 warn_on release CONFIG += qt debug CONFIG+= qt thread debug,11,学习交流PPT,pro文件解释,TEMPLATE: 表示最终生成得目标文件类型app表示,最终生成得可执行文件 TARGET:目标名称是自动设置的,它被设置为和项目文件一样的名称,但是为了适合平台所需要的后缀。DEPENDPATH:应用程序所依赖的搜索路径 INCLUDEPATH:应用程序所需的额外的包含路径的列表 SOURCES:应用程序得源代码 HEADERS:应用程序用到的头文件 FORMS:应用程序用到的ui窗体文件 CONFIG: 包含Qt连接编译得一些配置
13、信息包括: qt warn_on :编译器会输出尽可能多的警告信息 qt warn_off :编译器会输出尽可能少的警告信息 qt debug:应用程序将以debug模式连编。 qt thread debug :连编为一个可调试的多线程的应用程序,12,学习交流PPT,Qt2包含的模块,QtCore 和图形无关的核心模块 QtGui 所有的图形模块 QtNetWork 网络相关的模块 QtOpenGL 支持OpenGL QtSql QT支持数据库开发模块 QtSvg定义和生成SVG类 QtXML读取XML文件模块 QtDesignerQt的图形界面设计 QtUiTool定义在应用程序中直接处理
14、ui文件的类 Qt3Support Qt3版本的支持 QtAssistant 定义和扩展Qt设计器的类,13,学习交流PPT,qmake命令,qmake可以根据实际文件自动生成相对应makefile文件,命令格式: qmake options files,14,学习交流PPT,Qt体系架构图,15,学习交流PPT,qmake编译Qt次序,首先使用qmake project选项命令,根据当前源代码生成后缀名为pro的工程文件 其次再次调用qmake命令或者执行 qmake o Makefile 自动生成Makefile文件,16,学习交流PPT,Qtopia添加线程
15、支持,由于qtopia 2.2.0的makefile里的问题,现在只能自己手动编译出支持thread的libqte-mt.so.* 进入qtopia-2.2.0-FriendlyARM/qt2目录手动配置来支持multi-thread 如果编译的是x86版本那么执行./configure -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif -thread 如果编译的是arm版本那么执行./configure -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg
16、 -qt-zlib -qt-libpng -gif -no-g+-exceptions -no-qvfb -xplatform linux-arm-g+ -tslib -thread 上面的步骤执行后会在当前目录下产生src-mt.mk文件,用编辑器将其内容的最后一行”cd src; $(MAKE) clean“删除或注释掉 编译libqte-mt:make src-mt 编译完成后将在qtopia-2.2.0- FriendlyARM/qtopia/lib目录下生成所期待的libqte-mt.so.*文件,17,学习交流PPT,Qt布局管理器绝对位置方式,这种方式是通过QWidge提供的se
17、tGeometry()函数来设置子窗口部件大小和在父窗口的位置 但是绝对位置方式缺点是:如果父窗口大小发生改变,子窗口部件无法做出相应变化,18,学习交流PPT,setGeometry()函数,指定子部件在父窗体中所处的位置和大小 void QWidget:setGeometry ( intx, inty, intw, inth ) 参数说明: x:表示子部件在父窗体行的位置 y:表示子部件在父窗体列的位置 w:表示子部件宽度 h:表示子部件的高度,19,学习交流PPT,绝对位置示例,#include #include #include int main(int argc, char *arg
18、v) QApplication app(argc, argv); QWidget *widget=new QWidget; QLabel *label = new QLabel(Hello Qt!“,widget); label-setGeometry(10,10,20,20); widget-resize(300,300); widget-show(); return app.exec(); ,20,学习交流PPT,布局管理器类图,QObject,QGridLayout,QVBoxLayout,QBoxLayout,QHBoxLayout,QLayout,21,学习交流PPT,布局管理器常用
19、方法,setLayout函数:通过调用该函数设置窗口的布局模式 setLayout addWidget addColSpacing setSpacing,22,学习交流PPT,QHBoxLayout,#include #include #include int main(int argc, char *argv) QApplication app(argc, argv); QWidget *window = new QWidget; QPushButton *button1=new QPushButton(“OK”); QPushButton *button2=new QPushButton(
20、“cancel”); window-setWindowTitle(Enter Your Age); QHBoxLayout *layout = new QHBoxLayout; layout-addWidget(button1); layout-addWidget(button2); window-setLayout(layout); window-show(); return app.exec(); ,23,学习交流PPT,QVBoxLayout,#include #include #include #include #include int main(int argc, char *arg
21、v) QApplication app(argc, argv); QWidget *window = new QWidget; window-setWindowTitle(QVBoxLayout); window-resize(240, 100); QLCDNumber *lcd = new QLCDNumber; QObject:connect(slider, SIGNAL(valueChanged(int), lcd, SLOT(display(int); QVBoxLayout *layout = new QVBoxLayout(window); layout-addWidget(lcd
22、); layout-addWidget(slider); window-show(); return app.exec();,24,学习交流PPT,QGridLayout,#include #include #include int main(int argc, char *argv) QApplication app(argc, argv); QWidget *wm = new QWidget; QLabel *label; QGridLayout *grid = new QGridLayout(wm, 3, 3); grid-addColSpacing(0, 200); grid-addC
23、olSpacing(1, 100); label = new QLabel(one, wm); grid-addWidget(label, 0, 0); grid-addWidget(new QLabel(two, wm), 1, 0); label = new QLabel(three, wm); grid-addWidget(label, 2, 0); grid-addWidget(new QLabel(four, wm), 1, 1); label = new QLabel(five, wm); grid-addWidget(label, 2, 2); app.setMainWidget
24、(wm); wm-show(); return app.exec(); ,25,学习交流PPT,QDialog类,QDialog类是对话框窗口的基类,对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口,QDialog可以是模式的也可以是非模式的,QDialog支持扩展性并且可以提供返回值,它们可以有默认按钮。,26,学习交流PPT,对话框模式,模式 对话框就是阻塞同一应用程序中其它可视窗口的输入,对话框用户必须完成这个对话框中的交互操作并且关闭了它之后才能访问应用程序中的其它任何窗口 非模式 对话框是和同一个程序中其它窗口操作无关的对话框。在字处理软件中查找和替换对话框通常是非模式的
25、来允许同时与应用程序主窗口和对话框进行交互。,27,学习交流PPT,QMessageBox静态成员,StandardButton QMessageBox:critical ( QWidget*parent, constQString void mySignal(int x); void mySignalParam(int x,int y); 在上面的定义中,signals是QT的关键字,而非C/C+的。接下来的一行void mySignal() 定义了信号mySignal,这个信号没有携带参数;接下来的一行void mySignal(int x)定义 了重名信号mySignal,但是它携带一个
26、整形参数,这有点类似于C+中的虚函数。从形式上 讲信号的声明与普通的C+函数是一样的,但是信号却没有函数体定义,另外,信号的返回类型都是void。,33,学习交流PPT,槽,槽是普通的C+成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。 同普通的C+成员函数一样,槽函数也分为三种类型,即public slots、private slots和protected slots。 槽也能够声明为虚函数,这也是非常有用的。,34,学习交流PPT,槽函数类型,public slots:在这个区内声明的槽
27、意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。 protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。 private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。,35,学习交流PPT,如何编写槽,槽的声明也是在头文件中进行的。例如,下面声明了三个槽: public slots: void mySlot(); void mySlot(int x); v
28、oid mySignalParam(int x,int y);,36,学习交流PPT,QObject:connect,通过调用QObject对象的connect函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用,该函数的定义如下: bool QObject:connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) static 这个函数的作用就是将发射者sender对象中的信号signal与接收者re
29、ceiver中的member槽函数联系起来。当指定信号 signal时必须使用QT的宏SIGNAL(),当指定槽函数时必须使用宏SLOT()。如果发射者与接收者属于同一个对象的话,那么在connect 调用中接收者参数可以省略。,37,学习交流PPT,带有信号和槽的类,class TsignalApp:public QMainWindow Q_OBJECT /信号声明区 signals: /声明信号mySignal() void mySignal(); /声明信号mySignal(int) void mySignal(int x); /声明信号mySignalParam(int,int) vo
30、id mySignalParam(int x,int y); /槽声明区 public slots: /声明槽函数mySlot() void mySlot(); /声明槽函数mySlot(int) void mySlot(int x); /声明槽函数mySignalParam (int,int) void mySignalParam(int x,int y); ,38,学习交流PPT,一个信号与另一个信号相关联,class MyWidget : public QWidget public: MyWidget(); . signals: void aSignal(); . private: .
31、QPushButton *aButton; ; MyWidget:MyWidget() aButton = new QPushButton( this ); connect( aButton, SIGNAL(clicked(), SIGNAL(aSignal() ); ,39,学习交流PPT,信号和槽示例,下面定义了两个对象:标签对象label和滚动条对象scroll,并将valueChanged()信号与标签对象的setNum()相关联,另外信号还携带了一个整形参数,这样标签总是显示滚动条所处位置的值。 QLabel *label = new QLabel; QScrollBar *scro
32、ll = new QScrollBar; QObject:connect( scroll, SIGNAL(valueChanged(int), label, SLOT(setNum(int) );,40,学习交流PPT,QObject:disconnect,当信号与槽没有必要继续保持关联时,我们可以使用disconnect函数来断开连接。 bool QObject:disconnect ( const QObject * sender, const char * signal, const Object * receiver, const char * member ) static,41,学
33、习交流PPT,信号和槽限制,类型宏不能被用于信号和槽的参数 #ifdef ultrix #define SIGNEDNESS(a) unsigned a #else #define SIGNEDNESS(a) a #endif class Whatever : public QObject . signals: void someSignal(SIGNEDNESS(int);/错误 . ;,42,学习交流PPT,信号和槽限制,构造函数不能用于信号部分和槽部分 class SomeClass : public QObject Q_OBJECT public slots: SomeClass( Q
34、Object *parent, const char *name ) : QObject( parent, name ) /错误 . ;,43,学习交流PPT,信号和槽限制,函数指针不能作为信号或槽的参数 class SomeClass : public QObject Q_OBJECT . public slots: void apply( void (*apply)(List *, void *), char * ); /错误 ;,44,学习交流PPT,信号和槽限制,信号和槽不能被升级 QButtonGroup:buttonPressed()槽是保护的。 class Whatever :
35、public QButtonGroup . public slots: void QButtonGroup:buttonPressed; / 错的 . ;,45,学习交流PPT,信号和槽限制,如果一个信号与多个槽相联系的话,那么,当这个信号被发射时,与之相关的槽被激活的顺序将是随机的。 信号与槽不能有缺省参数。 信号与槽也不能携带模板类参数。 嵌套的类不能位于信号或槽区域内也不能有信号或者槽。 友元声明不能位于信号或者槽声明区内。,46,学习交流PPT,元对象工具,元对象编译器moc(meta object compiler)对C+文件中的类声明进行分析并产生用于初始化元对象的C+代码,元对象
36、包含全部信号和槽的名字以及指向这些函数的指针。 元对象代码是signal/slot机制所必须的。用moc产生的C+源文件必须与类实现一起进行编译和连接,或者用#include语句将其包含到类的源文件中。moc并不扩展#include或者#define宏定义,它只是简单的跳过所遇到的任何预处理指令。,47,学习交流PPT,moc编译,moc元对象编译器的功能是把包含有信号和槽的源文件编译成特殊的文件名为moc_+实际源文件名称.它的具体使用格式如下: moc option moc mysingal.h -o moc_mysingal.h option包含如下参数: -o 把编译结果写到一个文件中
37、而不是标志输出 -p -p path 使元对象编译器生成的(如果有生成的)#include声明的文件名称中预先考虑到path/。 -q path 使元对象编译器在生成的文件中的qt #include文件的名称中预先考虑到path/。,48,学习交流PPT,类声明位置,类的声明放在一个头文件(.h文件)中 如果在上述的文件myclass.h中发现类的声明,元对象编译器的输出文件将会被放在一个叫moc_myclass.cpp的文件中。这个文件将会像通常情况一样被编译,作为对象文件的结果是moc_myclass.o 类的声明放在一个实现文件(.cpp文件)中 如果上述的文件myclass.cpp中发
38、现类的声明,元对象编译器的输出文件将会被放在一个叫myclass.moc的文件中。这个文件需要被实现文件包含(#include),也就是说myclass.cpp需要包含下面这行 #include myclass.moc 放在所有的代码之后。,49,学习交流PPT,事件机制,Qt中定义的事件是一个从QEvent类继承下来的,它表示应用程序内部或者外部发生某些应用程序必须知道的事情 在Qt内部,Qt通过由函数QApplication:exec()函数启动的主事件循环从系统事件队列中抓取属于本程序事件并转化为QEvent对象,50,学习交流PPT,事件类图,QEvent,QMouseEvent,QF
39、ocusEvent,QObject,QKeyEvent,QPaintEvent,QMoveEvent,QResizeEvent,51,学习交流PPT,事件来源分类,基于事件如何被产生与分发,可以把事件分为三类: Spontaneous 事件,由窗口系统产生,它们被放到系统队列中,通过事件循环逐个处理。 Posted 事件,由Qt或是应用程序产生,它们被Qt组成队列,再通过事件循环处理。 Sent 事件,由Qt或是应用程序产生,但它们被直接发送到目标对象。,52,学习交流PPT,QEvent对象,QEvent对象是所有事件对象的基类,因此有必要了解该对象构成函数: enum Type 标识事件类
40、型 Type type () const 调用该函数,返回事件发生事件的类型(该类型为枚举),53,学习交流PPT,常用的事件类型,通过调用QEvent:type函数可以返回具体事件类型,Qt已经为具体的事件类型事先定义了: QEvent:MouseButtonPress - 鼠标按下,QMouseEvent。 QEvent:MouseButtonRelease - 鼠标抬起,QMouseEvent。 QEvent:MouseButtonDblClick - 鼠标再次按下 QEvent:MouseMove - 鼠标移动,QMouseEvent。 QEvent:Close - 窗口部件被关闭(永
41、久性地) QCloseEvent。 QEvent:KeyPress - 键按下(举例,包括Shift)QKeyEvent。 QEvent:KeyRelease - 键抬起,QKeyEvent。 QEvent:FocusIn - 窗口部件获得键盘焦点,QFocusEvent。 QEvent:FocusOut - 窗口部件失去键盘焦点,QFocusEvent。 QEvent:Timer - 规则的定时器事件,QTimerEvent。,54,学习交流PPT,常用的Qt事件类,Qt为多数事件定义了特殊的类: QMouseEvent 鼠标事件 QKeyEvent 键盘事件 QResizeEvent窗体宿
42、放事件 QPaintEvent 窗体重绘事件 QCloseEvent 窗体关闭事件 QFocusEvent 部件获得焦点事件,55,学习交流PPT,事件处理方法,Qt提供了几种处理事件的方法: 重新实现特定的事件处理器 重新实现QObject:event()函数 继承QApplication并重新实现notify()函数,56,学习交流PPT,实现特定的事件处理器,最常见的事件处理办法就是重载象mousePressEvent(), keyPressEvent(), paintEvent() 这样的特定事件处理函数. 以按键事件为例,57,学习交流PPT,QKeyEvent对象,QKeyEven
43、t对象是Qt的键盘事件的包装对象,我们也经常需要捕获键盘事件,下面是该对象主要成员函数: int key () const int ascii () const ButtonState state () const ButtonState stateAfter () const bool isAccepted () const QString text () const bool isAutoRepeat () const int count () const void accept () void ignore (),58,学习交流PPT,Qt键盘常量,为了方便程序员捕获特殊键,Qt已经对所有的键盘都进行了宏定义,下面列出常用的键值:,59,学习交流PPT,QMouseEvent对象,在Qt系统中对所有鼠标事件都被封装为QMouseEvent对象,有必要了解下该对象成员函数 Qt:MouseButton button () const 返回发生鼠标事件时按下的鼠标按钮 const QPoint break; case Key_Minus: zoom
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能算法在银行风险评估中的应用
- 普惠金融智能化-第16篇
- 证券市场波动性研究
- 普惠金融与跨境支付创新
- 高二会考试题及答案数学
- 就业中心考试题目大全及答案
- 南京市转业考试题及答案
- 2026年高职应急救援技术(应急救援技术)试题及答案
- 2026年高职消防工程技术(消防工程技术)试题及答案
- 康师傅生动化陈列手册
- 2026年中小学教师(语文)副高级职称评审答辩题库及答案
- 学校管理与教师专业发展手册
- 初中音乐七年级上册《美丽的草原我的家》深度鉴赏与跨文化理解教案
- 2026秋新人教版英语五年级上册单元一Unit 1 Different friends测试卷-提高卷附答案(文档中已插入听力音频)
- 2026年餐饮服务食品安全管理员试题及答案
- GB/T 47950-2026资产管理数据资产登记指南
- 2026版《医师外出会诊管理暂行规定》课件
- 影像医学技术操作规程大全
- 2026年河南高考地理考试试卷及答案
- 中国老年抗中性粒细胞胞浆抗体相关肾小球肾炎治疗指南总结2026
- 2026版中华人民共和国生态环境法典深度解析课件
评论
0/150
提交评论