QT理论试题及答案.doc

上传人:PIYPING 文档编号:10734550 上传时间:2021-06-01 格式:DOC 页数:26 大小:175.38KB
返回 下载 相关 举报
QT理论试题及答案.doc_第1页
第1页 / 共26页
QT理论试题及答案.doc_第2页
第2页 / 共26页
QT理论试题及答案.doc_第3页
第3页 / 共26页
QT理论试题及答案.doc_第4页
第4页 / 共26页
QT理论试题及答案.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《QT理论试题及答案.doc》由会员分享,可在线阅读,更多相关《QT理论试题及答案.doc(26页珍藏版)》请在三一文库上搜索。

1、QT理论试题1 以下关于QT的描述正确的是: a. 是一个不跨平台的C+图形用户界面b. 由挪威TrollTech公司出品c. 只支持Unix、Linuxd. QT API和开发工具对所支持的平台是不一致的2 以下关于QT的描述不正确的是:a. QT支持2D图形渲染b. QT支持3D图形渲染c. QT支持OpenGLd. QT不支持XML3 下关于不正确的是:a. 是面向嵌入式系统的Qt版本b. 是Qt的嵌入式窗口c. 基于Windows平台的开发工具d. 是完整的自包含C+ GUI的开发工具4 内部对字符集的处理采用以下哪个标准: a. UNICODEb. ASCIIc. GB2312d.

2、ISO 8859-15 以下关于Qt描述不正确的是a. 是基于面向对象的C+语言b. 提供了signal和slot的对象通信机制c. 有可查询和可设计属性d. 没有字符国际化6 以下描述正确的是: a. 标准的C+对象模型可有效的支持运行时参数b. 标准的C+对象模型的静态特性十分灵活c. 图形用户界面编程无需运行得高效d. 图形用户界面编程无需运行得高灵活性7 以下不是QT增加的特性:a. 有效的对象通信signal和slotb. 可查询和可设计的对象c. 事件及事件过滤器d. 不使用指针8 以下描述正确的是:a. 元对象系统可以对信号使用模板b. 元对象系统可以对槽使用模板c. Qt可在多

3、个平台的应用程序中完全应用模板d. Qt不能在多个平台的应用程序中完全应用模板9 以下关于moc叙述正确的是: a. moc即Mult Object Compilerb. 可产生能被任何标准C+编译访问的附加C+代码c. moc必须手动调用d. 类声明中有无Q_OBJECT无所谓10以下关于信号和槽的描述正确的是: a. 用于SOCKET网络通信b. 用于UDP网络通信e. 用于对象间通信c. 用于串口通信11以下关于信号/槽的叙述不正确的是: a. 信号与槽通过connected函数任意相连b. 信号/槽机制在QObject类中实现c. 从QWidget类继承的所有类可以包含信号和槽d. 当

4、对象状态变化时信号被发送,对象不关心是否有其他对象接收到该信号12以下类声明中有几处错误?class M : public Qobject Q_OBJECTpublic :M ( ) ;int value ( ) constreturn va ;public slots :void setValue ( int ) ;signals :void valueChanged ( int ) ;private:int va ;;a. 5b. 4c. 3d. 213设有如下声明void M : : setValue ( int v )if ( v != va )va = v ;emit valueCh

5、anged ( v ) ;则对于如下语句M a , b ;connect ( &a , SIGNAL ( valueChanged ( int ) ) , &b , SLOT ( setValue ( int ) ) ) ;b.setValue ( 11 ) ;a.setValue ( 12 ) ;b.value ( ) ;执行后,值为: a. 11 11b. 12 12c. 11 12d. 12 1114以下关于槽的描述正确的是: a. 槽具有public和protected 2个类b. protected slots 表示只有该类的子类的信号才能连接c. 槽是普通成员函数d. 不能有pri

6、vate slots15以下关于元对象系统不正确的是a. 元对象系统只是用于处理对象间通信的信号/槽机制b. 元对象系统可处理运行时的类型信息和动态属性系统c. 元对象系统基于Qobject类d. bc都对16不是元对象代码实现的特征的是:a. 提供信号/槽机制b. Class.forName ( )在运行的时候返回类名称c. tr ( )用于国际化中的字符串翻译d. metaObject ( )返回该类所关联的元对象17以下关于Q_OBJECT叙述不正确的是: a. 类定一种声明了Q_OBJECT后,该类才能使用元对象系统相关的特性b. Q_OBJECT对所有类都无关紧要c. QObject

7、的子类中未实现信号和槽也可使用Q_OBJECTd. QObject的子类中未实现属性也可使用Q_OBJECT18以下关于元对象编译器的叙述不正确的是: a. 元对象编译器不展开#define ,但可展开#includeb. 元对象编译器不展开#includec. 忽略遇到的所有预处理程序d. 无法处理所有C+语法19有如下语句class YourClass : public QobjectQ_OBJECTpublic slots :void apply ( void ( *apply ) ( List * , void * ) , char * ) ;以下正确的是a. 完全正确b. 可以没有Q

8、_OBJECTc. slots关键字有误d. 函数指针不能作为信号和槽的参数20如下叙述不正确的是: a. 不能把继承的成员函数升级为共有状态b. 宏不能用在信号和槽的参数中c. 嵌套类不能放在信号部分d. 嵌套类可以放在槽部分21有如下声明:class Abc : public QobjectQ_OBJECT public : Q_PROPERTY(Priority priority READ priority WRITE setPriority ) Q_ENUMS ( Priority )enum Priority High , Low , VeryHigh , VeryLow ;void

9、 setPriority ( Priority ) ;Priority priority ( ) const ;关于属性声明的位置以下正确的是: a. 原位置正确 b. 原位置不正确,应为 c. 原位置不正确,应为 22以下关于属性的叙述不正确的是: a. 基于元对象系统b. 在类声明中用宏声明c. 属性不是一个类的成员d. 属性只能在继承于QObject的子类中声明23以下关于QObject类叙述不正确的是: a. 是所有Qt对象的基类b. QObject对象树是一个静态的QObjectList类对象object_treesc. object_trees链表中存有部分对象指针d. 通过obj

10、ect_trees链表可查询到所有的对象24以下是事件处理方法的是: a. 重载QApplication : : notify ( )b. 重载QObject : : event ( )c. 重载Qt基类事件处理函数d. 以上全是25以下关于定时器的叙述不正确的是: a. 多数平台支持2ms精度的定时器b. 使用定时器,可以用QTimer类c. 使用定时器,可以用QObject类的定时器d. 定时器精度依赖于操作系统和硬件26以下关于QObject类定时器的叙述正确的是: a. 当处理器正忙于其它事件的处理时,定时器仍可以立即触发b. 当定时器触发时,应用程序会发送QtimerEventc.

11、用startTimer ( )开始一个定时器,如果成功则返回0d. 用startTimer ( )开始一个定时器,如果失败则返回-127以下是QObject提供的字符串翻译函数的选项是: a. translateit ( ) , trUtf8 ( )b. translation ( )c. tr ( ) , trUtf_8 ( )d. tr ( ) , trUtf8 ( )28以下关于元对象的叙述不正确的是: a. 每个在类声明中含有Q_OBJECT宏的类都有一个对应的元对象b. 每个在类声明中含有Q_OBJECT宏的类都有一个对应的QMetaObject类对象c. 元对象是动态的d. 一个类

12、可能含有多个元对象与之对应29窗口部件的父类包括: a. QWidgetb. QFramec. QScrollViewd. 以上全是30以下关于QWidget类、QFrame类和QScrollView类的关系叙述正确的是: a. 三个类是兄弟关系b. 三个类是继承关系:QWidget为祖父,QFrame为父,QScrollView为子c. 三个类是继承关系:QFrame为祖父,QWidget为父,QScrollView为子d. 三个类是继承关系:QFrame为祖父,QWidget与QScrollView互为兄弟31以下关于Qt风格叙述正确的是: a. Qt的风格类的基类是QStyle类b. Q

13、Style的多数成员函数即有声明也有实现c. 其实现只能在QCommonStyle类中通过重载来完成d. 其实现只能在QWindowStyle类中通过重载来完成32关于布局功能的叙述,以下正确的是:a. 在布局空间中布置子窗口部件b. 设置子窗口部件间的空隙c. 管理在布局空间中布置子窗口部件d. 以上都对33以下关于QLayout的描述不正确的是:a. 是的布局系统抽象基类b. 其中,属性int margin代表布局的外边框的宽度c. 其中,属性int spacing代表布局内的窗口部件的大小d. 其中,属性ResizeMode resizeMode代表布局的扩展方式34布局窗口部件包括:a

14、. QHBoxb. QVBoxc. QGridd. 以上全有35以下叙述不正确的是:a. QHBox允许子窗口部件按水平、垂直和网格排列b. QVBox允许子窗口部件按水平、垂直和网格排列c. QGrid允许子窗口部件按水平、垂直和网格排列d. 以上全不对36以下各项中,是QLayout子类的是:a. QGridLayoutb. QHBoxLayoutc. QVBoxLayoutd. b和c37如果对默认放置位置不满意,则须采取相应的措施,以下哪项不是:a. 创建没有父布局的布局对象b. 调用addLayout ( )把这个布局插入到其他布局中c. 没有办法d. a和b38以下关于集合类描述不

15、正确的是:a. 它是装有多个条目的容器b. 每个条目是某种数据结构c. 集合类可对容器中的条目做插入操作d. 集合类不能对容器中的条目做删除操作39以下各项中属于基于值的集合类是:a. QCacheb. QMapc. QPtrListd. QDict40以下各项中属于基于指针的集合类的是:a. QIntCacheb. QValueStakc. QValueVectord. QValueList41以下各项中既不基于指针也不基于值的是:a. QIntDictb. QPtrListc. QPtrStackd. QMemArray42所有基于指针的集合继承了如下哪个类?a. QGCacheb. QG

16、Vectorc. QPtrCollectiond. QGList43当插入一个条目到一个集合时,如下不正确的是:a. 仅拷贝指针而不拷贝条目本身的,称“浅拷贝”b. 不允许只拷贝指针而不拷贝条目本身c. 拷贝所有条目的数组到集合中是可能的d. 选项C又称“深拷贝”44以下各项中不是与Qt线程相关的类的是:a. QMutexb. QSemaphorec. QThreadd. 以上都不是45以下关于Qt线程叙述正确的是:a. Qt中提供了Thread线程类b. Qt中提供了QThread线程类c. 通过重载Thread : : run ( ) 函数定义线程的执行内容d. 通过重载QThread :

17、 : _run ( ) 函数定义线程的执行内容46有如下关于线程的代码:class Your_Class : public QThreadpublic :virtual void run ( ) ; ;void Your_Class : run ( ) YourClass:run();for ( int i=0 ; i 100 ; i+ ) ;int main ( )Your_Class a ;a . run ( ) ;return 0 ;其中有几处错误:a. 1b. 2c. 3d. 447以下关于线程编程时的注意事项中不正确的是:a. 在持有Qt库互斥量时必须执行阻塞操作b. 在调用除了Qt

18、容器和工具类外的任何内容之前,锁定Qt应用程序互斥量c. 只在GUI线程中使用QNetwork类d. 不要在应用程序中把普通Qt库与支持线程的Qt库混用48以下不属于拖放机制的是:a. 拖动b. 剪贴板c. 放下d. 以上都不是49以下关于拖动的叙述错误的是:a. 在拖动之后,QDragObject被立即删除b. 拖放明显完成后,这个QDragObject要被保存c. QDragObject可能要与其他进程通信d. QDragObject对象最后由Qt删除50在一些简单情况下,拖放的目标接收一个被拖动数据的拷贝,并且由源决定是否删除初始的拖动对象,这是QDropEvent中的什么操作?a. C

19、opyb. Movec. Linkd. 以上都不是51Qt/Embedded的开发公司是:a. Microsoftb. Sunc. Oracled. Trolltech52以下各项中关于焦点定位的习惯方式叙述错误的是:a. 用户按Tab键b. 用户按Enter键c. b选项不是d. 用户使用鼠标滚轮53以下关于Qt/Embedded叙述不正确的是:a. 是C/S结构b. 类库完全采用C语言c. 采用framebuffer作为底层图形接口d. 将外部输入设备抽象为keyboard和mouse输入事件54以下关于字体的叙述正确的是:a. Qt/Embedded用QFontManager管理字体,与

20、字体相关的类在服务器端运行b. Qt/Embedded用QFontManager管理字体,与字体相关的类在客户端运行c. Qt/Embedded用FontManager管理字体,与字体相关的类在服务器端运行d. Qt/Embedded用FontManager管理字体,与字体相关的类在客户端运行55以下各项中与显示无关的类是:a. QScreenb. QLockc. QWSManagerd. QDiskFont56以下不是Qt支持的图像格式是:a. JPGb. PNGc. BMPd. XPM57以下叙述正确的是:a. Qt支持GIF格式图像,且可以存储它们b. Qt支持GIF格式图像,但不可以存

21、储它们c. Qt不支持GIF格式图像,但可以存储它们d. Qt不支持GIF格式图像,且不可以存储它们58用QPainter的转换函数对图像做转换后,若要恢复图像的原样,则以下正确的是:a. 无法实现b. 可以实现,用QPainter : : resetForm ( ) 只能恢复最近一次的转换c. 可以实现,用QPainter : : resetForm ( ) 可以撤销所有的转换操作59用QPixmap对象打开GIF动画,以下叙述正确的是:a. 可以看到动画b. 看不到任何画面c. 只能看到动画的第一帧d. 只能看到动画的最后一帧60以下关于Qt/Embedded客户端与服务器的描述不正确的是

22、:a. 客户端可以有多个b. 服务器可以有多个c. 客户端只有一个d. 服务器只有一个简答题1、 什么是qt,有什么优点? 答:Qt是诺基亚开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。是一个跨平台的 C+ 图形用户界面库。Qt具有非常强的跨平台和移植性强的特点。同时支持linux、windows、嵌入式的用户界面开发。2、 使用Qt编码实现Lable显示“hello world”的功能。 #include#include#include/#includeint main(

23、int argc,char *argv)QApplication app(argc,argv);/QTextCodec:setCodecForTr(QTextCodec:codecForName(gb18030);QWidget *pWidget=new QWidget;QLabel label(pWidget);label.setText(hello world);pWidget-show();return app.exec();3、 编写代码实现调用槽函数退出的quit程序,界面如下: #include#include#includeint main(int argc,char *argv

24、)QApplication app(argc,argv);QWidget *pWidget=new QWidget;QPushButton *button=new QPushButton(Quit,pWidget);QObject:connect(button,SIGNAL(clicked(),pWidget,SLOT(close();pWidget-show();return app.exec();4、 编程实现spinbox和slider(QSlider(Qt:Horizontal)之间的交互,界面如下,两种期间的范围全部是0-130。Title为“enter your age” #inc

25、lude#include#include#include#includeint main(int argc,char* argv)QApplication app(argc,argv);/创建app的构造函数QWidget *pWidget= new QWidget; /new一个WidgetpWidget-setWindowTitle(enter your age); /设置captionQSpinBox* spinbox = new QSpinBox; /new一个spinboxQSlider* slider = new QSlider(Qt:Horizontal); /new一个slid

26、erspinbox-setRange(0,130); /设置范围,-符号slider-setRange(0,130);QObject:connect(spinbox,SIGNAL(valueChanged(int),slider,SLOT(setValue(int);QObject:connect(slider,SIGNAL(valueChanged(int),spinbox,SLOT(setValue(int);/信号和槽,(发送者,信号,接收者,槽).第一个是spinbox发送给slider的/第二个是slider发送给spinbox的spinbox-setValue(23);/QHBox

27、Layout是布局管理器,即在水平方向上排列窗口部件QHBoxLayout* layout = new QHBoxLayout;layout-addWidget(spinbox);layout-addWidget(slider); pWidget-setLayout(layout); pWidget-show(); /窗体显示return app.exec();5、 如何编译运行qt程序,命令是什么? qmake -projectqmake make6、 如何将UI界面问件转化成代码的.h文件?(假设ui文件名为gogogo.ui。) UIC -o gogogo.h gogogo.ui7、 请

28、填写空格处的语句,实现声明自己的槽MyWinExit和信号OnExit。 class MyWindow : public Qwidget Q_OBJECTpublic: MyWindow(QWidget *parent = 0);signals: OnExit(); private slots: MyWinExit(); 8、 假设我们建立了一个widget的图形用户界面,如图所示:那么我们main文件应该怎么写,假设ui的名字为gotocelldialog.ui #include #include #include ui_gotocelldialog.h int main(int argc,

29、 char *argv) QApplication app(argc, argv); Ui:GotoCellDialog ui; QDialog *dialog = new QDialog; ui.setupUi(dialog); dialog-show(); return app.exec();9、 假设文件浏览器的界面定义如下:/* Form generated from reading ui file dir.ui* Created: Fri Dec 10 11:46:18 2010* by: Qt User Interface Compiler version 4.5.0* WARNI

30、NG! All changes made in this file will be lost when recompiling ui file!*/#ifndef UI_DIR_H#define UI_DIR_H#include #include #include #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACEclass Ui_Dialogpublic: QVBoxLayout *verticalLayout; QComboBox *combo

31、Box; QSplitter *splitter_2; QSplitter *splitter; QTreeView *treeView; QListView *listView; QTableView *tableView; void setupUi(QDialog *Dialog) if (Dialog-objectName().isEmpty() Dialog-setObjectName(QString:fromUtf8(Dialog); Dialog-resize(901, 372); verticalLayout = new QVBoxLayout(Dialog); vertical

32、Layout-setObjectName(QString:fromUtf8(verticalLayout); comboBox = new QComboBox(Dialog); comboBox-setObjectName(QString:fromUtf8(comboBox); comboBox-setMaximumSize(QSize(85, 16777215); verticalLayout-addWidget(comboBox); splitter_2 = new QSplitter(Dialog); splitter_2-setObjectName(QString:fromUtf8(s

33、plitter_2); splitter_2-setOrientation(Qt:Horizontal); splitter = new QSplitter(splitter_2); splitter-setObjectName(QString:fromUtf8(splitter); splitter-setOrientation(Qt:Horizontal); treeView = new QTreeView(splitter); treeView-setObjectName(QString:fromUtf8(treeView); splitter-addWidget(treeView);

34、listView = new QListView(splitter); listView-setObjectName(QString:fromUtf8(listView); splitter-addWidget(listView); splitter_2-addWidget(splitter); tableView = new QTableView(splitter_2); tableView-setObjectName(QString:fromUtf8(tableView); splitter_2-addWidget(tableView); verticalLayout-addWidget(

35、splitter_2); retranslateUi(Dialog); QMetaObject:connectSlotsByName(Dialog); / setupUi void retranslateUi(QDialog *Dialog) Dialog-setWindowTitle(QApplication:translate(Dialog, Dialog, 0, QApplication:UnicodeUTF8); comboBox-clear(); comboBox-insertItems(0, QStringList() QApplication:translate(Dialog,

36、345210227350241250350247206345233276, 0, QApplication:UnicodeUTF8) QApplication:translate(Dialog, 347264247345207221350247206345233276, 0, QApplication:UnicodeUTF8) ); Q_UNUSED(Dialog); / retranslateUi;namespace Ui class dir: public Ui_Dialog ; / namespace UiQT_END_NAMESPACE#endif / UI_DIR_H请使用Qdir实

37、现treeview,listview,tableview项目 答:dir.h#ifndef DIR_H#define DIR_H#include #include ui_dir.hclass Dir : public QDialog, public Ui:dirQ_OBJECTpublic:Dir(QWidget *parent = 0);public slots:void chooseMode(int);#endifdir.cpp#include #include dir.hDir:Dir(QWidget *parent):QDialog(parent)setupUi(this);QDirM

38、odel *dirModel;QStringList filter; dirModel=new QDirModel(filter,QDir:Dirs|QDir:NoDotAndDotDot,QDir:DirsFirst|QDir:Name|QDir:Type); treeView-setModel(dirModel);treeView-hideColumn(1);treeView-hideColumn(2);treeView-hideColumn(3);tableView-setModel(dirModel);listView-setModel(dirModel); /tableView-hi

39、de();comboBox=new QComboBox(); comboBox-addItem(tr(以图标方式显示);comboBox-addItem(tr(以列表方式显示);comboBox-addItem(tr(以详细信息方式显示);comboBox-setCurrentIndex(0);/selectionModel=ui-treeView-selectionModel();connect(treeView,SIGNAL(doubleClicked(QModelIndex),listView,SLOT(setRootIndex(QModelIndex);connect(treeView

40、,SIGNAL(doubleClicked(QModelIndex),tableView,SLOT(setRootIndex(QModelIndex);connect(comboBox,SIGNAL(activated(int),this,SLOT(chooseMode(int);void Dir:chooseMode(int i) /*if(i=0) tableView-hide(); listView-show(); if(i=1) listView-hide(); tableView-show(); */main.cpp#include #include dir.hint main(int argc,char *argv)QApplication app(argc,argv);Di

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1