QT理论试题
1.以下关于QT的描述正确的是:
a. 是一个不跨平台的C++图形用户界面 b. 由挪威TrollTech公司出品 c. 只支持Unix、Linux
d. QT API和开发工具对所支持的平台是不一致的 2.以下关于QT的描述不正确的是:
a. QT支持2D图形渲染 b. QT支持3D图形渲染 c. QT支持OpenGL d. QT不支持XML 3.下关于不正确的是:
a. 是面向嵌入式系统的Qt版本 b. 是Qt的嵌入式窗口
c. 基于Windows平台的开发工具
d. 是完整的自包含C++ GUI的开发工具 4.内部对字符集的处理采用以下哪个标准:
a. UNICODE b. ASCII c. GB2312 d. ISO 8859—1
5.以下关于Qt描述不正确的是
a. 是基于面向对象的C++语言
b. 提供了signal和slot的对象通信机制 c. 有可查询和可设计属性 d. 没有字符国际化 6.以下描述正确的是:
a. 标准的C++对象模型可有效的支持运行时参数 b. 标准的C++对象模型的静态特性十分灵活 c. 图形用户界面编程无需运行得高效
d. 图形用户界面编程无需运行得高灵活性 7.以下不是QT增加的特性:
a. 有效的对象通信signal和slot b. 可查询和可设计的对象 c. 事件及事件过滤器 d. 不使用指针
8.以下描述正确的是:
a. 元对象系统可以对信号使用模板 b. 元对象系统可以对槽使用模板
c. Qt可在多个平台的应用程序中完全应用模板 d. Qt不能在多个平台的应用程序中完全应用模板 9.以下关于moc叙述正确的是:
a. moc即Mult Object Compiler
b. 可产生能被任何标准C++编译访问的附加C++代码 c. moc必须手动调用
d. 类声明中有无Q_OBJECT无所谓 10.以下关于信号和槽的描述正确的是:
a. 用于SOCKET网络通信 b. 用于UDP网络通信 e. 用于对象间通信 c. 用于串口通信
11.以下关于信号/槽的叙述不正确的是:
a. 信号与槽通过connected函数任意相连 b. 信号/槽机制在QObject类中实现
c. 从QWidget类继承的所有类可以包含信号和槽
d. 当对象状态变化时信号被发送,对象不关心是否有其他对象接收到该信
号
12.以下类声明中有几处错误? class M : public Qobject { Q_OBJECT public : M ( ) ; int value ( ) const { return va ; } public slots : void setValue ( int ) ; signals : void valueChanged ( int ) ; private: int va ; };
a. 5 b. 4 c. 3 d. 2
13.设有如下声明 void M : : setValue ( int v ) { if ( v != va ) { va = v ;
emit valueChanged ( v ) ; } }
则对于如下语句 M a , b ; connect ( &a , SIGNAL ( valueChanged ( int ) ) , &b , SLOT ( setValue ( int ) ) ) ; b。setValue ( 11 ) ; a.setValue ( 12 ) ; b.value ( ) ; 执行后,值为: a。 11 11 b。 12 12 c。 11 12 d。 12 11 14.以下关于槽的描述正确的是:
a. 槽具有public和protected 2个类
b. protected slots 表示只有该类的子类的信号才能连接 c. 槽是普通成员函数 d. 不能有private slots
15.以下关于元对象系统不正确的是
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的子类中未实现信号和槽也可使用Q_OBJECT d. QObject的子类中未实现属性也可使用Q_OBJECT 18.以下关于元对象编译器的叙述不正确的是:
a. 元对象编译器不展开#define ,但可展开#include b. 元对象编译器不展开#include c. 忽略遇到的所有预处理程序 d. 无法处理所有C++语法 19.有如下语句
class YourClass : public Qobject { Q_OBJECT public slots : void apply ( void ( *apply ) ( List * , void * ) , char * ) ; }
以下正确的是
a. 完全正确
b. 可以没有Q_OBJECT
c. slots关键字有误
d. 函数指针不能作为信号和槽的参数 20.如下叙述不正确的是:
a. 不能把继承的成员函数升级为共有状态 b. 宏不能用在信号和槽的参数中 c. 嵌套类不能放在信号部分 d. 嵌套类可以放在槽部分 21.有如下声明:
class Abc : public Qobject { ① Q_OBJECT
② public :
③ Q_PROPERTY(Priority priority READ priority WRITE
setPriority )
④ Q_ENUMS ( Priority )
enum Priority { High , Low , VeryHigh , VeryLow }; void setPriority ( Priority ) ; Priority priority ( ) const ;
};
关于属性声明的位置以下正确的是:
a. 原位置正确 ① ② ③ ④
b. 原位置不正确,应为 ① ③ ④ ② c. 原位置不正确,应为 ① ③ ② ④ 22.以下关于属性的叙述不正确的是:
a. 基于元对象系统 b. 在类声明中用宏声明 c. 属性不是一个类的成员
d. 属性只能在继承于QObject的子类中声明 23.以下关于QObject类叙述不正确的是:
a. 是所有Qt对象的基类
b. QObject对象树是一个静态的QObjectList类对象object_trees c. object_trees链表中存有部分对象指针
d. 通过object_trees链表可查询到所有的对象 24.以下是事件处理方法的是:
a. 重载QApplication : : notify ( ) b. 重载QObject : : event ( ) c. 重载Qt基类事件处理函数 d. 以上全是
25.以下关于定时器的叙述不正确的是:
a. 多数平台支持2ms精度的定时器 b. 使用定时器,可以用QTimer类
c. 使用定时器,可以用QObject类的定时器 d. 定时器精度依赖于操作系统和硬件
26.以下关于QObject类定时器的叙述正确的是:
a. 当处理器正忙于其它事件的处理时,定时器仍可以立即触发 b. 当定时器触发时,应用程序会发送QtimerEvent
c. 用startTimer ( )开始一个定时器,如果成功则返回0 d. 用startTimer ( )开始一个定时器,如果失败则返回—1 27.以下是QObject提供的字符串翻译函数的选项是:
a. translateit ( ) , trUtf8 ( ) b. translation ( )
c. tr ( ) , trUtf_8 ( ) d. tr ( ) , trUtf8 ( )
28.以下关于元对象的叙述不正确的是:
a. 每个在类声明中含有Q_OBJECT宏的类都有一个对应的元对象
b. 每个在类声明中含有Q_OBJECT宏的类都有一个对应的QMetaObject类
对象
c. 元对象是动态的
d. 一个类可能含有多个元对象与之对应 29.窗口部件的父类包括:
a. QWidget b. QFrame c. QScrollView d. 以上全是
30.以下关于QWidget类、QFrame类和QScrollView类的关系叙述正确的是:
a. 三个类是兄弟关系
b. 三个类是继承关系:QWidget为祖父,QFrame为父,QScrollView为子 c. 三个类是继承关系:QFrame为祖父,QWidget为父,QScrollView为子 d. 三个类是继承关系:QFrame为祖父,QWidget与QScrollView互为兄弟 31.以下关于Qt风格叙述正确的是:
a. Qt的风格类的基类是QStyle类
b. QStyle的多数成员函数即有声明也有实现
c. 其实现只能在QCommonStyle类中通过重载来完成 d. 其实现只能在QWindowStyle类中通过重载来完成 32.关于布局功能的叙述,以下正确的是:
a. 在布局空间中布置子窗口部件 b. 设置子窗口部件间的空隙
c. 管理在布局空间中布置子窗口部件 d. 以上都对
33.以下关于QLayout的描述不正确的是:
a. 是的布局系统抽象基类
b. 其中,属性int margin代表布局的外边框的宽度
c. 其中,属性int spacing代表布局内的窗口部件的大小 d. 其中,属性ResizeMode resizeMode代表布局的扩展方式 34.布局窗口部件包括:
a. QHBox b. QVBox c. QGrid
d. 以上全有
35.以下叙述不正确的是:
a. QHBox允许子窗口部件按水平、垂直和网格排列 b. QVBox允许子窗口部件按水平、垂直和网格排列 c. QGrid允许子窗口部件按水平、垂直和网格排列 d. 以上全不对
36.以下各项中,是QLayout子类的是:
a. QGridLayout b. QHBoxLayout c. QVBoxLayout d. b和c
37.如果对默认放置位置不满意,则须采取相应的措施,以下哪项不是:a. 创建没有父布局的布局对象
b. 调用addLayout ( )把这个布局插入到其他布局中 c. 没有办法 d. a和b
38.以下关于集合类描述不正确的是:
a. 它是装有多个条目的容器 b. 每个条目是某种数据结构
c. 集合类可对容器中的条目做插入操作 d. 集合类不能对容器中的条目做删除操作 39.以下各项中属于基于值的集合类是:
a. QCache b. QMap c. QPtrList d. QDict
40.以下各项中属于基于指针的集合类的是:
a. QIntCache b. QValueStak c. QValueVector d. QValueList
41.以下各项中既不基于指针也不基于值的是:
a. QIntDict b. QPtrList c. QPtrStack d. QMemArray
42.所有基于指针的集合继承了如下哪个类?
a. QGCache b. QGVector
c. QPtrCollection d. QGList
43.当插入一个条目到一个集合时,如下不正确的是:
a. 仅拷贝指针而不拷贝条目本身的,称“浅拷贝\" b. 不允许只拷贝指针而不拷贝条目本身
c. 拷贝所有条目的数组到集合中是可能的 d. 选项C又称“深拷贝”
44.以下各项中不是与Qt线程相关的类的是:
a. QMutex b. QSemaphore c. QThread d. 以上都不是
45.以下关于Qt线程叙述正确的是:
a. Qt中提供了Thread线程类 b. Qt中提供了QThread线程类
c. 通过重载Thread : : run ( ) 函数定义线程的执行内容 d. 通过重载QThread : : _run ( ) 函数定义线程的执行内容 46.有如下关于线程的代码:
class Your_Class : public QThread { public : virtual void run ( ) ; } ;
void Your_Class : run ( ) Your—-Class::run(); { for ( int i=0 ; i 〈 100 ; i++ ) ; }
int main ( ) { Your_Class a ; a . run ( ) ; return 0 ; }
其中有几处错误:
a. 1 b. 2 c. 3 d. 4
47.以下关于线程编程时的注意事项中不正确的是:
a. 在持有Qt库互斥量时必须执行阻塞操作
b. 在调用除了Qt容器和工具类外的任何内容之前,锁定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. Copy b. Move c. Link
d. 以上都不是
51.Qt/Embedded的开发公司是:
a. Microsoft b. Sun c. Oracle d. Trolltech
52.以下各项中关于焦点定位的习惯方式叙述错误的是:
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管理字体,与字体相关的类在服务器端运
行
b. Qt/Embedded用QFontManager管理字体,与字体相关的类在客户端运行 c. Qt/Embedded用FontManager管理字体,与字体相关的类在服务器端运行 d. Qt/Embedded用FontManager管理字体,与字体相关的类在客户端运行 55.以下各项中与显示无关的类是:
a. QScreen b. QLock
c. QWSManager d. QDiskFont
56.以下不是Qt支持的图像格式是:
a. JPG b. PNG c. BMP d. XPM
57.以下叙述正确的是:
a. Qt支持GIF格式图像,且可以存储它们 b. Qt支持GIF格式图像,但不可以存储它们
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客户端与服务器的描述不正确的是:
a. 客户端可以有多个 b. 服务器可以有多个 c. 客户端只有一个 d. 服务器只有一个
简答题
1、 什么是qt,有什么优点?
答:Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程.是一个跨平台的 C++ 图形用户界面库.Qt具有非常强的跨平台和移植性强的特点。同时支持linux、windows、嵌入式的用户界面开发。
2、 使用Qt编码实现Lable显示“hello world”的功能。 #include 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〈QtGui/QWidget〉 #include〈QPushButton> #include QApplication app(argc,argv); QWidget *pWidget=new QWidget; QPushButton *button=new QPushButton(\"Quit\); 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\" #include〈QApplication〉 #include QApplication app(argc,argv);//创建app的构造函数 QWidget *pWidget= new QWidget; //new一个Widget pWidget->setWindowTitle(\"enter your age\"); //设置caption QSpinBox* spinbox = new QSpinBox; //new一个spinbox QSlider* slider = new QSlider(Qt::Horizontal); //new一个slider spinbox—〉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); //QHBoxLayout是布局管理器,即在水平方向上排列窗口部件 QHBoxLayout* layout = new QHBoxLayout; layout-〉addWidget(spinbox); layout—〉addWidget(slider); pWidget—>setLayout(layout); pWidget->show(); //窗体显示 return app。exec(); } 5、 如何编译运行qt程序,命令是什么? qmake -project qmake make 6、 如何将UI界面问件转化成代码的。h文件?(假设ui文件名为gogogo。ui。) UIC —o gogogo。h gogogo.ui 7、 请填写空格处的语句,实现声明自己的槽MyWinExit和信号OnExit. class MyWindow : public Qwidget { Q_OBJECT public: MyWindow(QWidget *parent = 0); signals: OnExit(); private slots: MyWinExit(); } 8、 假设我们建立了一个widget的图形用户界面,如图所示: 那么我们main文件应该怎么写,假设ui的名字为gotocelldialog.ui #include 〈QApplication> #include 〈QDialog> #include \"ui_gotocelldialog。h\" int main(int argc, 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 ** ** WARNING! All changes made in this file will be lost when recompiling ui file! ********************************************************************************/ #ifndef UI_DIR_H #define UI_DIR_H #include 〈QtCore/QVariant〉 #include 〈QtGui/QAction〉 #include QT_BEGIN_NAMESPACE class Ui_Dialog { public: QVBoxLayout *verticalLayout; QComboBox *comboBox; 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); verticalLayout—(”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(\"splitter_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); listView = new QListView(splitter); listView->setObjectName(QString::fromUtf8(”listView”)); splitter-〉addWidget(listView); splitter_2—>addWidget(splitter); 〉 setObjectName(QString: : fromUtf8 tableView = new QTableView(splitter_2); tableView-〉setObjectName(QString::fromUtf8(”tableView”)); splitter_2->addWidget(tableView); verticalLayout—>addWidget(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”, \"\\345\\210\\227\\350\\241\\250\\350\\247\\206\\345\\233\\276”, 0, QApplication::UnicodeUTF8) 〈 〈 QApplication : :translate (\"Dialog\”\\347\\2\\247\\345\\207\\221\\350\\247\\206\\345\\233\\276\", 0, QApplication::UnicodeUTF8) ); Q_UNUSED(Dialog); } // retranslateUi }; namespace Ui { class dir: public Ui_Dialog {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_DIR_H 请使用Qdir实现treeview,listview,tableview项目 答: dir。h #ifndef DIR_H #define DIR_H #include 〈QDialog〉 #include ”ui_dir。h\" class Dir : public QDialog, public Ui::dir { Q_OBJECT public: Dir(QWidget *parent = 0); public slots: void chooseMode(int); }; #endif dir.cpp #include 〈QtGui〉 #include ”dir.h\" Dir::Dir(QWidget *parent) { setupUi(this); QDirModel *dirModel; QStringList filter; :QDialog(parent) 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-〉hide(); 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,SIGNAL ( doubleClicked(QModelIndex ) ) , tableView,SLOT(setRootIndex(QModelIndex))); } void Dir::chooseMode(int i) { /*if(i==0) { tableView—〉hide(); listView—>show(); } if(i==1) { connect(comboBox,SIGNAL(activated(int)),this,SLOT(chooseMode(int))); listView—〉hide(); tableView-〉show(); }*/ } main。cpp #include return app.exec(); Dir *adddir = new Dir; adddir—〉show(); QApplication app(argc,argv); 10、编写一个简单的程序,它包含两个列表框,使用for循环向左边的列表框添加几个条目。点击〉按钮可以将左边选中的条目添加到右边.点击〈按钮可以将右边选中的条目添加到左边.点击>〉按钮可以将左边的所有条目添加到右边. (提示:列表框控件的类是QListWidget。应该熟悉QListWidget常用的一些方法及信号和槽.) 运行结果如图: 答: ui_listbox.h /******************************************************************************** ** Form generated from reading ui file ’listbox.ui' ** ** Created: Mon Jul 7 00:10:58 2008 ** by: Qt User Interface Compiler version 4。4。0 ** ** WARNING! All changes made in this file will be lost when recompiling ui file! ********************************************************************************/ #ifndef UI_LISTBOX_H #define UI_LISTBOX_H #include QT_BEGIN_NAMESPACE class Ui_Form { public: QListWidget *leftList; QListWidget *rightList; QPushButton *add; QPushButton *remove; QPushButton *addAll; QPushButton *removeAll; void setupUi(QWidget *Form) { if (Form->objectName().isEmpty()) Form—>setObjectName(QString::fromUtf8(”Form”)); Form—〉resize(522, 388); leftList = new QListWidget(Form); leftList-〉setObjectName(QString::fromUtf8(”leftList”)); leftList-〉setGeometry(QRect(10, 20, 211, 341)); rightList = new QListWidget(Form); rightList—>setObjectName(QString::fromUtf8(”rightList”)); rightList-〉setGeometry(QRect(295, 20, 211, 341)); add = new QPushButton(Form); add—〉setObjectName(QString::fromUtf8(”add”)); add—〉setGeometry(QRect(230, 80, 51, 27)); remove = new QPushButton(Form); remove—>setObjectName(QString::fromUtf8(”remove”)); remove->setGeometry(QRect(230, 130, 51, 27)); addAll = new QPushButton(Form); addAll—〉setObjectName(QString::fromUtf8(”addAll”)); addAll—>setGeometry(QRect(230, 180, 51, 27)); removeAll = new QPushButton(Form); removeAll—〉setObjectName(QString::fromUtf8(”removeAll”)); removeAll—〉setGeometry(QRect(230, 230, 51, 27)); retranslateUi(Form); QMetaObject::connectSlotsByName(Form); } // setupUi void retranslateUi(QWidget *Form) { Form—>setWindowTitle(QApplication::translate(”Form”, ”Form\0, QApplication::UnicodeUTF8)); add—〉setText(QApplication::translate(\"Form”, ”>”, 0, QApplication:: UnicodeUTF8)); remove-〉setText(QApplication::translate(”Form”, ”<”, 0, QApplication::UnicodeUTF8)); addAll-〉setText(QApplication::translate(”Form”, ”〉>\", 0, QApplication::UnicodeUTF8)); removeAll—>setText(QApplication::translate(”Form”, \"<〈”, 0, QApplication::UnicodeUTF8)); Q_UNUSED(Form); } // retranslateUi }; namespace Ui { class Form: public Ui_Form {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_LISTBOX_H listbox.h #ifndef _LISTBOX_H_ #define _LISTBOX_H_ #include ”listbox_ui。h” class CListBox:public QWidget,public Ui_Form { Q_OBJECT public: CListBox(QWidget* parent=0); private slots: void add(); void addAll(); void remove(); void removeAll(); }; #endif listbox.cpp #include setupUi(this); for(int i=1;i<=6;i++) leftList->addItem(tr(”条目%1”)。arg(i)); connect(addBtn,SIGNAL(clicked()),this,SLOT(add())); connect(addAllBtn,SIGNAL(clicked()),this,SLOT(addAll())); connect(removeBtn,SIGNAL(clicked()),this,SLOT(remove())); connect(removeAllBtn,SIGNAL(clicked()),this,SLOT(removeAll())); } void CListBox::add() { QListWidgetItem* item=leftList->currentItem(); if(item==0) return; rightList—〉addItem(item—>text()); leftList—>takeItem(leftList—〉currentRow()); } void CListBox::addAll() { for(int i=0;i〈leftList—〉count();i++) { QListWidgetItem* item=leftList—>item(i); rightList->addItem(item—〉text()); } leftList—〉clear(); } void CListBox::remove() { QListWidgetItem* item=rightList—>currentItem(); if(item==0) return; leftList—〉addItem(item->text()); rightList—>takeItem(rightList—>currentRow()); } void CListBox::removeAll() { for(int i=0;i〈rightList—〉count();i++) { QListWidgetItem* item=rightList—>item(i); leftList->addItem(item—>text()); } rightList—〉clear(); } int main(int argc,char* argv[]) { QApplication app(argc,argv); QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); CListBox dlg; dlg。show(); return app。exec(); } 11。QApplication的主要作用是什么? QApplication对象管理QtGui应用程序的控制流程和主要的设置参数 12。请写一个调用消息对话框提示报错的程序 QMessageBox::waring(this,tr(“警告\"),tr(“用户名或密码错误!\"),QMessageBox::Yes) 13。QT都提供哪些标准对话框以供使用,他们实现什么功能 9个QColorDialog 颜色对话框,能够允许用户选择颜色、QErrorMessage显示错误信息、QFileDialog文件对话框,能够允许用户选的一个或者多个文件以及目录、QFontDialog字体对话框,允许用户选择/设置字体、QInputDialog输入对话框,允许用户进行简单的输入、QPageSetupDialog叶设置对话框,配置与页相关的打印机选项、QProgressDialog 进度对话框 指示一个长时间操作的工作进度,以提示用户该操作是否已经停止、QPrintDialog 打印对话框,配置打印机,可以允许用户选择可用的打印机、QMessageBox。 14。QT中怎么在一个窗口中获得另一个窗口的指针 Class A { B b; P; } b。p Class B { Public: getName(char *p) { d=p; } } b.getName(this->p); 什么是Qt,有什么优点? Qt是有Troltech公司开发的一个多平台的c++图形用户界面程序框架。 优点:它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程. 可移植性:QT不仅适用于UNIX,同样适用于Windows.为了同时拥有世界上几百万UNIX用 户以及几百万的Windows用户,最好的办法是采用一个既适用于UNIX,又适用于Windows的GUI工具包,其答案是QT。 易用性:QT是一个C++工具包,它由几百个C++类构成,你在程序中可以使用这些类。因为C++是面向对象的编程语言,而QT是基于C++构造,所以QT具有OOP的所有优点 运行速度:QT非常容易使用,且也具有很快的速度.QT的易用性和快速是密不可分的。这一优点要归功于QT开发者的辛苦工作,他们花费了大量的时间来优化他们的产品。QT比其他许多GUI工具包运行速度快的原因是其实现方式。QT是一个GUI仿真工具包,即它不使用本地工具包作调用,而是使用各自平台上的低级绘图函数,从而提高程序速度。
因篇幅问题不能全部显示,请点此查看更多更全内容