- Qt参考文档
- Qt的类
- Qt的主要类
- Annotated Class Index
- 分组的类
- Member Function Index
- 关于Qt
- Qt的版本
- FAQs
- Window System-specific Notes
- 安装
- 如何学习Qt
- Qt教程一 —— 共十四步
- Qt教程二
- Examples
- Step-by-step Examples
- Key Features in Qt 3.0
- Porting to Qt 3.x
- 简体中文汉化日志
- Class Inheritance Hierarchy
- Qt Class Chart
- Header File Index
- 关于模块
- 画布模块
- 图标视图模块
- Network Module
- Qt OpenGL 三维绘图
- SQL模块
- 表格模块
- 工作区模块
- XML Module
- 概述与HOWTO
- Qt对象模型
- 信号和槽
- 窗口几何结构
- 事件和事件过滤器
- 以Qt国际化
- 调试技术
- Qt中的线程支持
- Qt插件HOWTO
- Pictures of Most Qt Widgets
- Company Information
- 如何报告bug
- Mailing Lists
- Qt的工具
- Qt翻译工具指南
- Qt助手和Qt参考文档
- qmake用户手册
- Standard Accelerator Keys
- Qt Free Edition License Agreement
- GNU General Public License
- Licenses for Code Used in Qt
- 抽象窗口部件类
- Analog Clock
- Walkthrough: A Tiny Editor Illustrating QActionGroup
- A Tiny Example Featuring QActionGroup
- Simple Addressbook
- Advanced Widgets
- Widget Appearance and Style
- Setting the Application Icon
- Main Window and Related Classes
- 介绍
- Qt参考文档介绍
- The 1 Minute Guide to using Qt Assistant
- Qt Assistant in More Detail
- Basic Widgets
- Biff (UNIX only)
- 如何生成大的稀疏QTable
- Buttons and Groupboxes
- A Complete Canvas Application
- Canvas Example
- Listviews with Checkable Items
- A small client-server example
- Collection Classes
- 坐标系统
- Cursors
- 写你自己的布局管理器
- Customized Layoutmanager
- Style overview
- Database Classes
- Format of the QDataStream Operators
- Digital Clock
- Qt Demo
- Qt 设计器
- Reference: Menu Options
- Reference: Toolbar Buttons
- Reference: Dialogs
- Reference: Wizards
- Reference: Windows
- Reference: The .ui File Format
- Creating a Qt Application
- Creating Main Windows with Actions, Toolbars and Menus
- The Designer Approach
- Subclassing and Dynamic Dialogs
- Creating Custom Widgets
- Creating Database Applications
- Customizing and Integrating Qt Designer
- Reference: Key Bindings
- Painting on the Desktop
- Dialog Classes
- A Directory Browser
- 拖放
- Drag And Drop Classes
- Drag and Drop
- Draw Demo
- Connect the Points
- Adding an accelerated graphics driver to Qt/Embedded
- Qt/Embedded Case Study - Cassiopeia E-100
- Character input in Qt/Embedded
- The Qt/Embedded-specific classes
- Qt/Embedded environment variables
- The Feature Definition File
- Fonts in Qt/Embedded
- Enabling the Linux Framebuffer
- Installing Qt/Embedded
- Qt/Embedded Performance Tuning
- Qt/Embedded Pointer Handling
- Porting your applications to Qt/Embedded
- Qt/嵌入式的虚拟帧缓冲
- Running Qt/Embedded applications
- Qt/Embedded as a VNC Server
- Environment Classes
- Event Classes
- Simple Filemanager
- 键盘焦点概述
- A Rectangle Draw "Benchmark"
- An FTP client
- Layout Management
- Grapher Plugin
- Graphics Classes
- Books about GUI
- Hello, World
- Help System
- Simple HTML Help Browser
- Internationalization
- Iconview
- iconview/simple_dd/main.cpp Example File
- iconview/simple_dd/main.h Example File
- Image Processing Classes
- Qt参考文档
- 安装Qt/Windows
- 安装Qt/X11
- Input/Output and Networking
- 布局类
- Layout Managers
- Conway's Game of Life
- Line Edits
- 介绍
- 发布管理器
- Translators
- Programmers
- Listboxes and Comboboxes
- Listbox Example
- Listviews
- A simple mail client
- Editors in a Motif form
- Editors in a Qt main window
- Editors in an Xt form
- makeqpf
- A MDI Application
- Using menus
- 元对象系统
- Miscellaneous Classes
- 使用元对象编译器
- Movies or the Story of the Animated GIF file
- Multimedia Classes
- Network Examples
- A simple NNTP implementation
- Qt-based LiveConnect Plugins
- LiveConnect Examples
- Object Model
- 对象树和对象所有权
- OpenGL Examples
- How to use X11 overlays with the Qt OpenGL extension
- Organizers
- Outliner to show use of DOM
- Picture
- Plugins
- Popup Widgets
- Table of Prime Numbers 2-9999
- Starting processes with IO redirection
- Progress Bar
- Progress Bar and Dialog Example
- 属性
- QAccel类
- qaccel.h包含文件
- QAccel成员列表
- QAccessible Class
- qaccessible.h Include File
- QAccessibleInterface Class
- QAccessibleInterface Member List
- QAccessible Member List
- QAccessibleObject Class
- QAccessibleObject Member List
- QAction类
- A Complete Application Window with Actions
- QAction Examples
- QActionGroup类
- QActionGroup成员列表
- qaction.h包含文件
- QAction成员列表
- QApplication类
- qapplication.h包含文件
- QApplication成员列表
- QAsciiCache Class
- qasciicache.h Include File
- QAsciiCacheIterator Class
- QAsciiCacheIterator Member List
- QAsciiCache Member List
- QAsciiDict Class
- qasciidict.h Include File
- QAsciiDictIterator Class
- QAsciiDictIterator Member List
- QAsciiDict Member List
- qasyncimageio.h Include File
- QAsyncIO Class
- qasyncio.h Include File
- QBitArray类
- qbitarray.h包含文件
- QBitArray成员列表
- QBitmap Class
- qbitmap.h Include File
- QBitmap Member List
- QBitVal Class
- QBitVal Member List
- QBoxLayout Class
- QBoxLayout Member List
- QBrush Class
- qbrush.h Include File
- QBrush Member List
- QBuffer类
- qbuffer.h包含文件
- QBuffer成员列表
- QButton类
- QButtonGroup类
- qbuttongroup.h包含文件
- QButtonGroup成员列表
- qbutton.h包含文件
- QButton成员列表
- QByteArray类
- QByteArray成员列表
- QCache Class
- qcache.h Include File
- QCacheIterator Class
- QCacheIterator Member List
- QCache Member List
- QCanvas Class
- QCanvasEllipse Class
- QCanvasEllipse Member List
- qcanvas.h Include File
- QCanvasItem Class
- QCanvasItemList Class
- QCanvasItemList Member List
- QCanvasItem Member List
- QCanvasLine Class
- QCanvasLine Member List
- QCanvas Member List
- QCanvasPixmap Class
- QCanvasPixmapArray Class
- QCanvasPixmapArray Member List
- QCanvasPixmap Member List
- QCanvasPolygon Class
- QCanvasPolygonalItem Class
- QCanvasPolygonalItem Member List
- QCanvasPolygon Member List
- QCanvasRectangle Class
- QCanvasRectangle Member List
- QCanvasSpline Class
- QCanvasSpline Member List
- QCanvasSprite Class
- QCanvasSprite Member List
- QCanvasText Class
- QCanvasText Member List
- QCanvasView Class
- QCanvasView Member List
- QCDEStyle Class
- qcdestyle.h Include File
- QCDEStyle Member List
- QChar Class
- QChar Member List
- QCharRef Class
- QCharRef Member List
- QCheckBox类
- qcheckbox.h包含文件
- QCheckBox成员列表
- QCheckListItem Class
- QCheckListItem Member List
- QCheckTableItem类
- QCheckTableItem成员列表
- QChildEvent Class
- QChildEvent Member List
- QClipboard类
- qclipboard.h包含文件
- QClipboard成员列表
- QCloseEvent Class
- QCloseEvent Member List
- QColor Class
- QColorDialog类
- qcolordialog.h包含文件
- QColorDialog成员列表
- QColorDrag Class
- QColorDrag Member List
- QColorGroup Class
- QColorGroup Member List
- qcolor.h Include File
- QColor Member List
- QComboBox Class
- qcombobox.h Include File
- QComboBox Member List
- QComboTableItem类
- QComboTableItem成员列表
- QCommonStyle Class
- qcommonstyle.h Include File
- QCommonStyle Member List
- QConstString Class
- QConstString Member List
- QContextMenuEvent Class
- QContextMenuEvent Member List
- QCopChannel Class
- qcopchannel_qws.h Include File
- QCopChannel Member List
- QCString类
- qcstring.h包含文件
- QCString成员列表
- QCursor Class
- qcursor.h Include File
- QCursor Member List
- QCustomEvent Class
- QCustomEvent Member List
- QCustomMenuItem Class
- QCustomMenuItem Member List
- QDataBrowser Class
- qdatabrowser.h Include File
- QDataBrowser Member List
- QDataPump Class
- QDataPump Member List
- QDataSink Class
- QDataSource Class
- QDataSource Member List
- QDataStream类
- qdatastream.h包含文件
- QDataStream成员列表
- QDataTable Class
- qdatatable.h Include File
- QDataTable Member List
- QDataView Class
- qdataview.h Include File
- QDataView Member List
- QDate类
- QDateEdit Class
- QDateEdit Member List
- QDate成员列表
- QDateTime类
- QDateTimeEdit Class
- qdatetimeedit.h Include File
- QDateTimeEdit Member List
- qdatetime.h包含文件
- QDateTime成员列表
- QDesktopWidget Class
- qdesktopwidget.h Include File
- QDesktopWidget Member List
- QDial Class
- qdial.h Include File
- QDial Member List
- QDialog类
- qdialog.h包含文件
- QDialog成员列表
- QDict Class
- qdict.h Include File
- QDictIterator Class
- QDictIterator Member List
- QDict Member List
- QDir类
- QDirectPainter Class
- qdirectpainter_qws.h Include File
- QDirectPainter Member List
- QDir
- qdir.h包含文件
- QDir成员列表
- QDns Class
- qdns.h Include File
- QDns Member List
- QDockArea类
- qdockarea.h包含文件
- QDockArea成员列表
- QDockWindow类
- qdockwindow.h包含文件
- QDockWindow成员列表
- QDomAttr Class
- QDomAttr Member List
- QDomCDATASection Class
- QDomCDATASection Member List
- QDomCharacterData Class
- QDomCharacterData Member List
- QDomComment Class
- QDomComment Member List
- QDomDocument Class
- QDomDocumentFragment Class
- QDomDocumentFragment Member List
- QDomDocument Member List
- QDomDocumentType Class
- QDomDocumentType Member List
- QDomElement Class
- QDomElement Member List
- QDomEntity Class
- QDomEntity Member List
- QDomEntityReference Class
- QDomEntityReference Member List
- qdom.h Include File
- QDomImplementation Class
- QDomImplementation Member List
- QDomNamedNodeMap Class
- QDomNamedNodeMap Member List
- QDomNode Class
- QDomNodeList Class
- QDomNodeList Member List
- QDomNode Member List
- QDomNotation Class
- QDomNotation Member List
- QDomProcessingInstruction Class
- QDomProcessingInstruction Member List
- QDomText Class
- QDomText Member List
- QDoubleValidator类
- QDoubleValidator成员列表
- QDragEnterEvent Class
- QDragEnterEvent Member List
- QDragLeaveEvent Class
- QDragLeaveEvent Member List
- QDragMoveEvent Class
- QDragMoveEvent Member List
- QDragObject Class
- qdragobject.h Include File
- QDragObject Member List
- qdrawutil.h Include File
- QDropEvent Class
- QDropEvent Member List
- QDropSite Class
- qdropsite.h Include File
- QEditorFactory Class
- qeditorfactory.h Include File
- QEditorFactory Member List
- QEmbed - File and Image Embedder
- QErrorMessage类
- qerrormessage.h包含文件
- QErrorMessage成员列表
- QEucJpCodec Class
- qeucjpcodec.h Include File
- QEucJpCodec Member List
- QEucKrCodec Class
- qeuckrcodec.h Include File
- QEucKrCodec Member List
- QEvent类
- qevent.h包含文件
- QEvent成员列表
- Font Displayer
- QFile类
- QFileDialog类
- qfiledialog.h包含文件
- QFileDialog成员列表
- qfile.h包含文件
- QFileIconProvider Class
- QFileIconProvider Member List
- QFileInfo Class
- qfileinfo.h Include File
- QFileInfo Member List
- QFile成员列表
- QFilePreview Class
- QFilePreview Member List
- QFocusData Class
- qfocusdata.h Include File
- QFocusData Member List
- QFocusEvent Class
- QFocusEvent Member List
- QFont Class
- QFontDatabase Class
- qfontdatabase.h Include File
- QFontDatabase Member List
- QFontDialog类
- qfontdialog.h包含文件
- QFontDialog成员列表
- QFont Examples
- qfont.h Include File
- QFontInfo Class
- qfontinfo.h Include File
- QFontInfo Member List
- QFontManager Class
- qfontmanager_qws.h Include File
- QFontManager Member List
- QFont Member List
- QFontMetrics Class
- qfontmetrics.h Include File
- QFontMetrics Member List
- QFrame类
- qframe.h包含文件
- QFrame成员列表
- QFtp类
- qftp.h包含文件
- QFtp成员列表
- QGb18030Codec Class
- qgb18030codec.h Include File
- QGb18030Codec Member List
- QGbkCodec Class
- QGbkCodec Member List
- qgfx_qws.h Include File
- QGL Class
- QGLayoutIterator Class
- QGLayoutIterator Member List
- QGLColormap Class
- qglcolormap.h Include File
- QGLColormap Member List
- QGLContext Class
- QGLContext Member List
- QGLFormat Class
- QGLFormat Member List
- qgl.h Include File
- QGL Member List
- qglobal.h Include File
- QGLWidget Class
- QGLWidget Member List
- QGrid类
- qgrid.h包含文件
- QGridLayout Class
- QGridLayout Member List
- QGrid成员列表
- QGridView Class
- qgridview.h Include File
- QGridView Member List
- QGroupBox类
- qgroupbox.h包含文件
- QGroupBox成员列表
- QGuardedPtr类
- qguardedptr.h包含文件
- QGuardedPtr成员列表
- QHBox Class
- qhbox.h Include File
- QHBoxLayout Class
- QHBoxLayout Member List
- QHBox Member List
- QHButtonGroup类
- qhbuttongroup.h包含文件
- QHButtonGroup成员列表
- QHeader类
- qheader.h包含文件
- QHeader成员列表
- QHebrewCodec Class
- QHebrewCodec Member List
- QHGroupBox类
- qhgroupbox.h包含文件
- QHGroupBox成员列表
- QHideEvent Class
- QHideEvent Member List
- QHostAddress Class
- qhostaddress.h Include File
- QHostAddress Member List
- QHttp Class
- qhttp.h Include File
- QHttp Member List
- QIconDrag Class
- QIconDragItem Class
- QIconDragItem Member List
- QIconDrag Member List
- QIconSet Class
- qiconset.h Include File
- QIconSet Member List
- QIconView Class
- qiconview.h Include File
- QIconViewItem Class
- QIconViewItem Member List
- QIconView Member List
- QImage Class
- QImageConsumer Class
- QImageConsumer Member List
- QImageDecoder Class
- QImageDecoder Member List
- QImageDrag Class
- QImageDrag Member List
- QImageFormat Class
- QImageFormat Member List
- QImageFormatPlugin Class
- qimageformatplugin.h Include File
- QImageFormatPlugin Member List
- QImageFormatType Class
- QImageFormatType Member List
- qimage.h Include File
- QImageIO Class
- QImageIO Member List
- QImage Member List
- QIMEvent Class
- QIMEvent Member List
- QInputDialog类
- qinputdialog.h包含文件
- QInputDialog成员列表
- QIntCache Class
- qintcache.h Include File
- QIntCacheIterator Class
- QIntCacheIterator Member List
- QIntCache Member List
- QIntDict Class
- qintdict.h Include File
- QIntDictIterator Class
- QIntDictIterator Member List
- QIntDict Member List
- QIntValidator类
- QIntValidator成员列表
- QIODevice类
- qiodevice.h包含文件
- QIODevice成员列表
- QIODeviceSource Class
- QJisCodec Class
- qjiscodec.h Include File
- QJisCodec Member List
- qkeyboard_qws.h Include File
- QKeyEvent Class
- QKeyEvent Member List
- QKeySequence Class
- qkeysequence.h Include File
- QKeySequence Member List
- QLabel Class
- qlabel.h Include File
- QLabel Member List
- QLayout Class
- qlayout.h Include File
- QLayoutItem Class
- QLayoutItem Member List
- QLayoutIterator Class
- QLayoutIterator Member List
- QLayout Member List
- QLCDNumber Class
- qlcdnumber.h Include File
- QLCDNumber Member List
- QLibrary Class
- qlibrary.h Include File
- QLibrary Member List
- QLineEdit Class
- qlineedit.h Include File
- QLineEdit Member List
- QListBox Class
- qlistbox.h Include File
- QListBoxItem Class
- QListBoxItem Member List
- QListBox Member List
- QListBoxPixmap Class
- QListBoxPixmap Member List
- QListBoxText Class
- QListBoxText Member List
- QListView Class
- qlistview.h Include File
- QListViewItem Class
- QListViewItemIterator Class
- QListViewItemIterator Member List
- QListViewItem Member List
- QListView Member List
- QLocalFs Class
- qlocalfs.h Include File
- QLocalFs Member List
- QLock Class
- qlock_qws.h Include File
- QLock Member List
- QMag
- QMainWindow类
- qmainwindow.h包含文件
- QMainWindow成员列表
- qmake的介绍
- 安装qmake
- 10分钟学会使用qmake
- qmake教程
- qmake概念
- qmake高级概念
- qmake Command Reference
- QMap Class
- QMapConstIterator Class
- QMapConstIterator Member List
- qmap.h Include File
- QMapIterator Class
- QMapIterator Member List
- QMap Member List
- QMemArray类
- qmemarray.h包含文件
- QMemArray成员列表
- QMenuBar Class
- qmenubar.h Include File
- QMenuBar Member List
- QMenuData Class
- qmenudata.h Include File
- QMenuData Member List
- QMessageBox类
- qmessagebox.h包含文件
- QMessageBox成员列表
- QMetaObject Class
- qmetaobject.h Include File
- QMetaObject Member List
- QMetaProperty Class
- QMetaProperty Member List
- qmime.h Include File
- QMimeSource Class
- QMimeSourceFactory Class
- QMimeSourceFactory Member List
- QMimeSource Member List
- QMotifPlusStyle Class
- qmotifplusstyle.h Include File
- QMotifPlusStyle Member List
- QMotifStyle Class
- qmotifstyle.h Include File
- QMotifStyle Member List
- QMouseEvent Class
- QMouseEvent Member List
- QMoveEvent Class
- QMoveEvent Member List
- QMovie Class
- qmovie.h Include File
- QMovie Member List
- QMultiLineEdit Class
- qmultilineedit.h Include File
- QMultiLineEdit Member List
- QMutex类
- qmutex.h包含文件
- QMutex成员列表
- qnamespace.h Include File
- qnetwork.h Example File
- QNetworkOperation Class
- QNetworkOperation Member List
- QNetworkProtocol Class
- qnetworkprotocol.h Include File
- QNetworkProtocol Member List
- qnp.h Include File
- QNPInstance Class
- QNPInstance Member List
- QNPlugin Class
- QNPlugin Member List
- QNPStream Class
- QNPStream Member List
- QNPWidget Class
- QNPWidget Member List
- QObject类
- QObjectCleanupHandler Class
- qobjectcleanuphandler.h Include File
- QObjectCleanupHandler Member List
- qobject.h包含文件
- QObjectList类
- qobjectlist.h包含文件
- QObjectListIt类
- QObjectListIt成员列表
- QObjectList成员列表
- QObject成员列表
- QPaintDevice类
- qpaintdevice.h包含文件
- QPaintDevice成员列表
- QPaintDeviceMetrics Class
- qpaintdevicemetrics.h Include File
- QPaintDeviceMetrics Member List
- QPainter类
- qpainter.h包含文件
- QPainter成员列表
- QPaintEvent Class
- QPaintEvent Member List
- QPair Class
- qpair.h Include File
- QPair Member List
- QPalette Class
- qpalette.h Include File
- QPalette Member List
- QPen Class
- qpen.h Include File
- QPen Member List
- QPicture Class
- qpicture.h Include File
- QPicture Member List
- QPixmap Class
- QPixmapCache Class
- qpixmapcache.h Include File
- QPixmapCache Member List
- qpixmap.h Include File
- QPixmap Member List
- QPlatinumStyle Class
- qplatinumstyle.h Include File
- QPlatinumStyle Member List
- QPNGImagePacker Class
- QPNGImagePacker Member List
- qpngio.h Include File
- QPoint类
- QPointArray Class
- qpointarray.h Include File
- QPointArray Member List
- qpoint.h包含文件
- QPoint成员列表
- QPopupMenu Class
- qpopupmenu.h Include File
- QPopupMenu Member List
- QPrinter Class
- qprinter.h Include File
- QPrinter Member List
- QProcess Class
- QProcess Examples
- qprocess.h Include File
- QProcess Member List
- QProgressBar Class
- qprogressbar.h Include File
- QProgressBar Member List
- QProgressDialog类
- qprogressdialog.h包含文件
- QProgressDialog成员列表
- QPtrCollection类
- qptrcollection.h包含文件
- QPtrCollection成员列表
- QPtrDict Class
- qptrdict.h Include File
- QPtrDictIterator Class
- QPtrDictIterator Member List
- QPtrDict Member List
- QPtrList类
- qptrlist.h包含文件
- QPtrListIterator类
- QPtrListIterator成员列表
- QPtrList成员列表
- QPtrQueue类
- qptrqueue.h包含文件
- QPtrQueue成员列表
- QPtrStack类
- qptrstack.h包含文件
- QPtrStack成员列表
- QPtrVector类
- qptrvector.h包含文件
- QPtrVector成员列表
- QPushButton类
- qpushbutton.h包含文件
- QPushButton成员列表
- QRadioButton Class
- qradiobutton.h Include File
- QRadioButton Member List
- QRangeControl类
- qrangecontrol.h包含文件
- QRangeControld成员列表
- QRect类
- qrect.h包含文件
- QRect成员列表
- QRegExp Class
- qregexp.h Include File
- QRegExp Member List
- QRegExpValidator Class
- QRegExpValidator Member List
- QRegion Class
- qregion.h Include File
- QRegion Member List
- QResizeEvent Class
- QResizeEvent Member List
- qrtlcodec.h Include File
- QScreen Class
- QScreen Member List
- QScrollBar类
- qscrollbar.h包含文件
- QScrollBar成员列表
- QScrollView类
- qscrollview.h包含文件
- QScrollView成员列表
- QSemaphore类
- qsemaphore.h包含文件
- QSemaphore成员列表
- QServerSocket Class
- qserversocket.h Include File
- QServerSocket Member List
- QSessionManager Class
- qsessionmanager.h Include File
- QSessionManager Member List
- QSettings Class
- qsettings.h Include File
- QSettings Member List
- QSGIStyle Class
- qsgistyle.h Include File
- QSGIStyle Member List
- QShowEvent Class
- QShowEvent Member List
- QSignal Class
- qsignal.h Include File
- QSignalMapper Class
- qsignalmapper.h Include File
- QSignalMapper Member List
- QSignal Member List
- QSimpleRichText Class
- qsimplerichtext.h Include File
- QSimpleRichText Member List
- QSize类
- QSizeGrip Class
- qsizegrip.h Include File
- QSizeGrip Member List
- qsize.h包含文件
- QSize成员列表
- QSizePolicy Class
- qsizepolicy.h Include File
- QSizePolicy Member List
- QSjisCodec Class
- qsjiscodec.h Include File
- QSjisCodec Member List
- QSlider Class
- qslider.h Include File
- QSlider Member List
- QSocket类
- QSocketDevice Class
- qsocketdevice.h Include File
- QSocketDevice Member List
- qsocket.h包含文件
- QSocket成员列表
- QSocketNotifier Class
- qsocketnotifier.h Include File
- QSocketNotifier Member List
- QSortedList Class
- qsortedlist.h Include File
- QSortedList Member List
- QSound类
- qsound.h包含文件
- QSound成员列表
- QSpacerItem Class
- QSpacerItem Member List
- QSpinBox Class
- qspinbox.h Include File
- QSpinBox Member List
- QSplitter Class
- qsplitter.h Include File
- QSplitter Member List
- QSql类
- QSqlCursor Class
- qsqlcursor.h Include File
- QSqlCursor Member List
- QSqlDatabase Class
- qsqldatabase.h Include File
- QSqlDatabase Member List
- QSqlDriver Class
- qsqldriver.h Include File
- QSqlDriver Member List
- QSqlDriverPlugin Class
- qsqldriverplugin.h Include File
- QSqlDriverPlugin Member List
- QSqlEditorFactory Class
- qsqleditorfactory.h Include File
- QSqlEditorFactory Member List
- QSqlError Class
- qsqlerror.h Include File
- QSqlError Member List
- QSqlField Class
- qsqlfield.h Include File
- QSqlFieldInfo Class
- QSqlFieldInfo Member List
- QSqlField Member List
- QSqlForm Class
- qsqlform.h Include File
- QSqlForm Member List
- qsql.h包含文件
- QSqlIndex Class
- qsqlindex.h Include File
- QSqlIndex Member List
- QSql成员列表
- QSqlPropertyMap Class
- qsqlpropertymap.h Include File
- QSqlPropertyMap Member List
- QSqlQuery类
- qsqlquery.h 包含文件
- QSqlQuery成员列表
- QSqlRecord Class
- qsqlrecord.h Include File
- QSqlRecordInfo Class
- QSqlRecordInfo Member List
- QSqlRecord Member List
- QSqlResult Class
- qsqlresult.h Include File
- QSqlResult Member List
- QStatusBar类
- qstatusbar.h包含文件
- QStatusBar成员列表
- QStoredDrag Class
- QStoredDrag Member List
- QStrIList Class
- QStrIList Member List
- QString类
- qstring.h包含文件
- QStringList Class
- qstringlist.h Include File
- QStringList Member List
- QString成员列表
- QStrList Class
- qstrlist.h Include File
- QStrListIterator Class
- QStrListIterator Member List
- QStrList Member List
- QStyle Class
- QStyleFactory Class
- qstylefactory.h Include File
- QStyleFactory Member List
- qstyle.h Include File
- QStyle Member List
- QStyleOption Class
- QStyleOption Member List
- QStylePlugin Class
- qstyleplugin.h Include File
- QStylePlugin Member List
- QStyleSheet Class
- qstylesheet.h Include File
- QStyleSheetItem Class
- QStyleSheetItem Member List
- QStyleSheet Member List
- Qt类
- QTab Class
- QTabBar Class
- qtabbar.h Include File
- QTabBar Member List
- QTabDialog类
- qtabdialog.h包含文件
- QTabDialog成员列表
- QTable类
- qtable.h包含文件
- QTableItem类
- QTableItem成员列表
- QTable成员列表
- QTableSelection类
- QTableSelection成员列表
- QTabletEvent Class
- QTabletEvent Member List
- QTab Member List
- QTabWidget Class
- qtabwidget.h Include File
- QTabWidget Member List
- QTextBrowser Class
- qtextbrowser.h Include File
- QTextBrowser Member List
- QTextCodec Class
- qtextcodec.h Include File
- QTextCodec Member List
- QTextCodecPlugin Class
- qtextcodecplugin.h Include File
- QTextCodecPlugin Member List
- QTextDecoder Class
- QTextDecoder Member List
- QTextDrag Class
- QTextDrag Member List
- QTextEdit类
- qtextedit.h包含文件
- QTextEdit成员列表
- QTextEncoder Class
- QTextEncoder Member List
- QTextIStream类
- QTextIStream成员列表
- QTextOStream类
- QTextOStream成员列表
- QTextStream类
- qtextstream.h包含文件
- QTextStream成员列表
- QTextView Class
- qtextview.h Include File
- QTextView Member List
- QThread类
- qthread.h包含文件
- QThread成员列表
- Display Images in Qt-supported Formats
- QTime类
- QTimeEdit Class
- QTimeEdit Member List
- QTime成员列表
- QTimer类
- QTimerEvent类
- QTimerEvent成员列表
- qtimer.h包含文件
- QTimer成员列表
- Qt模板库类
- Qt Member List
- QtMultiLineEdit Class
- qtmultilineedit.h Include File
- QtMultiLineEdit Member List
- QToolBar类
- qtoolbar.h包含文件
- QToolBar成员列表
- QToolButton类
- qtoolbutton.h包含文件
- QToolButton成员列表
- QToolTip Class
- QToolTipGroup Class
- QToolTipGroup Member List
- qtooltip.h Include File
- QToolTip Member List
- QTranslator Class
- qtranslator.h Include File
- QTranslator Member List
- QTranslatorMessage Class
- QTranslatorMessage Member List
- QTsciiCodec Class
- qtsciicodec.h Include File
- QTsciiCodec Member List
- QtTableView Class
- qttableview.h Include File
- QtTableView Member List
- Qt模板库
- QUriDrag Class
- QUriDrag Member List
- QUrl Class
- qurl.h Include File
- QUrlInfo Class
- qurlinfo.h Include File
- QUrlInfo Member List
- QUrl Member List
- QUrlOperator Class
- qurloperator.h Include File
- QUrlOperator Member List
- QValidator类
- qvalidator.h包含文件
- QValidator成员列表
- QVariant Class
- qvariant.h Include File
- QVariant Member List
- QVBox Class
- qvbox.h Include File
- QVBoxLayout Class
- QVBoxLayout Member List
- QVBox Member List
- QVButtonGroup类
- qvbuttongroup.h包含文件
- QVButtonGroup成员列表
- QVGroupBox类
- qvgroupbox.h包含文件
- QVGroupBox成员列表
- QWaitCondition类
- qwaitcondition.h包含文件
- QWaitCondition成员列表
- Simple HTML Browser
- QWhatsThis类
- qwhatsthis.h包含文件
- QWhatsThis成员列表
- QWheelEvent Class
- QWheelEvent Member List
- QWidget类
- QWidgetFactory Class
- qwidgetfactory.h Include File
- QWidgetFactory Member List
- qwidget.h包含文件
- QWidgetItem Class
- QWidgetItem Member List
- QWidget成员列表
- QWidgetPlugin Class
- qwidgetplugin.h Include File
- QWidgetPlugin Member List
- QWidgetStack类
- qwidgetstack.h包含文件
- QWidgetStack成员列表
- qwindowdefs.h Include File
- QWindowsMime Class
- QWindowsMime Member List
- QWindowsStyle Class
- qwindowsstyle.h Include File
- QWindowsStyle Member List
- qwindowsystem_qws.h Include File
- QWizard类
- qwizard.h包含文件
- QWizard成员列表
- QWMatrix Class
- qwmatrix.h Include File
- QWMatrix Member List
- QWorkspace类
- qworkspace.h包含文件
- QWorkspace成员列表
- Qt/Embedded
- QWSDecoration Class
- qwsdecoration_qws.h Include File
- QWSDecoration Member List
- QWSKeyboardHandler Class
- QWSKeyboardHandler Member List
- qwsmouse_qws.h Include File
- QWSMouseHandler Class
- QWSMouseHandler Member List
- QWSServer Class
- QWSServer Member List
- QWSWindow Class
- QWSWindow Member List
- QXmlAttributes Class
- QXmlAttributes Member List
- QXmlContentHandler Class
- QXmlContentHandler Member List
- QXmlDeclHandler Class
- QXmlDeclHandler Member List
- QXmlDefaultHandler Class
- QXmlDefaultHandler Member List
- QXmlDTDHandler Class
- QXmlDTDHandler Member List
- QXmlEntityResolver Class
- QXmlEntityResolver Member List
- QXmlErrorHandler Class
- QXmlErrorHandler Member List
- qxml.h Include File
- QXmlInputSource Class
- QXmlInputSource Member List
- QXmlLexicalHandler Class
- QXmlLexicalHandler Member List
- QXmlLocator Class
- QXmlLocator Member List
- QXmlNamespaceSupport Class
- QXmlNamespaceSupport Member List
- QXmlParseException Class
- QXmlParseException Member List
- QXmlReader Class
- QXmlSimpleReader Class
- QXmlSimpleReader Member List
- QXtApplication Class
- QXtApplication Member List
- qxt.h Include File
- QXtWidget Class
- QXtWidget Member List
- Range controls
- Richtext
- Rot13
- Simple Painting Application
- Qt的文本引擎
- Scrollview
- Session Management
- Implicitly and Explicitly Shared Classes
- Shared Classes
- Show Image
- Drag and Drop (Simple)
- Walkthrough: A Simple Application
- Walkthrough: A Simple Application with Actions
- A Complete Application Window
- A simple demonstration of QFont member functions
- Walkthrough: A simple QFont demonstration
- 小表格样例
- Sound Example
- Splitter
- SQL Module - Drivers
- Qt SQL Examples
- sql/overview/basicbrowsing2/main.cpp Example File
- sql/overview/basicbrowsing/main.cpp Example File
- sql/overview/basicdatamanip/main.cpp Example File
- sql/overview/connect1/main.cpp Example File
- sql/overview/create_connections/main.cpp Example File
- sql/overview/custom1/main.cpp Example File
- sql/overview/custom1/main.h Example File
- sql/overview/del/main.cpp Example File
- sql/overview/extract/main.cpp Example File
- sql/overview/form1/main.cpp Example File
- sql/overview/form2/main.h Example File
- sql/overview/insert/main.cpp Example File
- sql/overview/navigating/main.cpp Example File
- sql/overview/order1/main.cpp Example File
- sql/overview/order2/main.cpp Example File
- sql/overview/retrieve1/main.cpp Example File
- sql/overview/retrieve2/main.cpp Example File
- sql/overview/subclass1/main.cpp Example File
- sql/overview/subclass2/main.cpp Example File
- sql/overview/subclass2/main.h Example File
- sql/overview/subclass3/main.cpp Example File
- sql/overview/subclass3/main.h Example File
- sql/overview/subclass4/main.cpp Example File
- sql/overview/subclass4/main.h Example File
- sql/overview/subclass5/main.cpp Example File
- sql/overview/subclass5/main.h Example File
- sql/overview/table1/main.cpp Example File
- sql/overview/table2/main.cpp Example File
- sql/overview/table3/main.cpp Example File
- sql/overview/table3/main.h Example File
- sql/overview/table4/main.cpp Example File
- sql/overview/table4/main.h Example File
- sql/overview/update/main.cpp Example File
- SQL Table
- 表格样例
- t10/cannon.cpp Example File
- t10/cannon.h Example File
- t10/lcdrange.cpp Example File
- t10/lcdrange.h Example File
- t10/main.cpp Example File
- t11/cannon.cpp Example File
- t11/cannon.h Example File
- t11/lcdrange.cpp Example File
- t11/lcdrange.h Example File
- t11/main.cpp Example File
- t12/cannon.cpp Example File
- t12/cannon.h Example File
- t12/lcdrange.cpp Example File
- t12/lcdrange.h Example File
- t12/main.cpp Example File
- t13/cannon.cpp Example File
- t13/cannon.h Example File
- t13/gamebrd.cpp Example File
- t13/gamebrd.h Example File
- t13/lcdrange.cpp Example File
- t13/lcdrange.h Example File
- t13/main.cpp Example File
- t14/cannon.cpp Example File
- t14/cannon.h Example File
- t14/gamebrd.cpp Example File
- t14/gamebrd.h Example File
- t14/lcdrange.cpp Example File
- t14/lcdrange.h Example File
- t14/main.cpp Example File
- t7/lcdrange.cpp Example File
- t7/lcdrange.h Example File
- t7/main.cpp Example File
- t8/cannon.cpp Example File
- t8/cannon.h Example File
- t8/lcdrange.cpp Example File
- t8/lcdrange.h Example File
- t8/main.cpp Example File
- t9/cannon.cpp Example File
- t9/cannon.h Example File
- t9/lcdrange.cpp Example File
- t9/lcdrange.h Example File
- t9/main.cpp Example File
- Tabdialog
- table/bigtable/main.cpp Example File
- 表格例程
- Tablet Example
- A tiny SAX2 parser
- Demonstration of SAX2 features
- 为什么Qt不用模板来实现信号和槽?
- Tetrix
- Text Related Classes
- Text Edit Example
- Themes (Styles)
- 线程
- Tic Tac Toe
- 时间和日期
- 定时器
- A Tiny Example Featuring a Toggle Action
- Non-GUI Classes
- Advanced use of tool tips
- Trivial Example
- Qt教程一 —— 第一章:Hello, World!
- Qt教程一 —— 第二章:调用退出
- Qt教程一 —— 第三章:家庭价值
- Qt教程一 —— 第四章:使用窗口部件
- Qt教程一 —— 第五章:组装积木
- Qt教程一 —— 第六章:组装丰富的积木!
- Qt教程一 —— 第七章:一个事物领导另一个
- Qt教程一 —— 第八章:准备战斗
- Qt教程一 —— 第九章:你可以使用加农炮了
- Qt教程一 —— 第十章:像丝一样滑
- Qt教程一 —— 第十一章:给它一个炮弹
- Qt教程一 —— 第十一章:悬在空中的砖
- Qt教程一 —— 第十三章:游戏结束
- Qt教程一 —— 第十四章:面对墙壁
- 介绍
- 大图片
- 数据元素
- 主体很容易
- 实现图形用户界面
- 画布控制
- 文件处理
- 获得数据
- 设置选项
- 项目文件
- 完成
- User Interface Compiler (uic)
- 关于Unicode
- Widgets Example
- Wizard
- wizard/wizard.cpp Example File
- wizard/wizard.h Example File
- Transformed Graphics Demo
- Qt XML Examples
- Walkthrough: Using SAX2 features with the Qt XML classes
- Walkthrough: How to use the Qt SAX2 classes
- XML
- Qt Xt/Motif Support Extension
- 适应2000年问题声明
Network Module
This module is part of the Qt Enterprise Edition.
- Introduction
- Working Network Protocol independent with QUrlOperator and QNetworkOperation
- Implementing your own Network Protocol
- Error Handling
Introduction
The network module offers classes to make network programming easier and portable. Basically there are three sets of classes, first very basic classes like QSocket, QServerSocket, QDns, etc. which allow to work in a portable way with TCP/IP sockets. In addition, there are classes like QNetworkProtocol, QNetworkOperation in the Qt base library, which provide an abstract layer for implementing network protocols and QUrlOperator which operates on such network protocols. Finally the third set of network classes are the passive ones, namely QUrl and QUrlInfo which do URL parsing and similar stuff.
The first set of classes (QSocket, QServerSocket, QDns, QFtp, etc.) are included in the "network" module of Qt.
The QSocket classes are not directly related to the QNetwork classes, but QSocket should and will be used for implementing network protocols, which are directly related to the QNetwork classes. E.g. the QFtp class (implementation of the FTP protocol) uses QSockets. But QSockets don't need to be used for protocol implementations, e.g. QLocalFs (which is an implementation of the local filesystem as network protocol) uses QDir and no QSocket. Using QNetworkProtocols you can implement everything which fits into a hierarchical structure and can be accessed using URLs. This could be e.g. a protocol which can read pictures from a digital camera using a serial connection.
Working Network Protocol independent with QUrlOperator and QNetworkOperation
To just use existing network protocol implementations and operate on URLs using them is quite easy. E.g. downloading a file from an FTP server to the local filesystem can be done with following code:
QUrlOperator op; op.copy( "ftp://ftp.trolltech.com/qt/source/qt-2.1.0.tar.gz", "file:/tmp", FALSE );
And that's all! Of course an implementation of the FTP protocol has to be available and registered for doing that. More information on that later.
You can also do stuff like creating directories, removing files, renaming, etc. E.g. to create a folder on a private FTP account do
QUrlOperator op( "ftp://username:password@host.domain.no/home/username" ); op.mkdir( "New Directory" );
That's it again. To see all available operations, look at the QUrlOperator class documentation.
Now as everything works asynchronous, the function call for an operation returns before the operation has been processed. So you don't get a return value which tells you something about failure or success. The return value always is a pointer to a QNetworkOperation.
In this QNetworkOperation all information about the operation is stored. There is e.g. a method of QNetworkOperation which returns the state of this operation. Using that you can find out all the time in which state the operation currently is. Also you get the arguments you passed to the QUrlOperator method, the type of the operation and some more stuff from this QNetworkOperation object. For more details see the class documentation of QNetworkOperation.
Now, later you get signals emitted by the QUrlOperator, which inform you about the process of the operations. As you can call many methods which operate on a URL of one QUrlOperator, it queues up all these operations. So you can't know which operation the QUrlOperator just processes. Because of this you get in each signal as the last argument a pointer to the QNetworkOperation object which is just processed and from which this signal comes.
Some of these operations send a start() signal at the beginning (depending if it makes sense or not), then some of them send some signals during processing the operation, and all operations send a finished() signal after they are done. Now, finished could mean that the operation has been successfully finished or that it failed. To find that out you can use the QNetworkOperation pointer you got with the finished() signal. If QNetworkOperation::state() equals QNetworkProtocol::StDone the operation finished successful, if it is QNetworkProtocol::StFailed the operation failed.
Now, a slot which you connected to the QUrlOperator::finished( QNetworkOperation * ) signal could look like this
void MyClass::slotOperationFinished( QNetworkOperation *op ) { switch ( op->operation() ) { case QNetworkProtocol::OpMkDir: { if ( op->state() == QNetworkProtocol::StFailed ) qDebug( "Couldn't create directory %s", op->arg( 0 ).latin1() ); else qDebug( "Successfully created directory %s", op->arg( 0 ).latin1() ); } break; // ... and so on } }
As mentioned before, some operations send other signals too. Let's take the list children operation as an example (e.g. read the directory of a directory on a FTP server):
QUrlOperator op; MyClass::MyClass() : QObject(), op( "ftp://ftp.trolltech.com" ) { connect( &op, SIGNAL( newChildren( const QValueList<QUrlInfo> &, QNetworkOperation * ) ), this, SLOT( slotInsertEntries( const QValueList<QUrlInfo> &, QNetworkOperation * ) ) ); connect( &op, SIGNAL( start( QNetworkOperation * ) ), this, SLOT( slotStart( QNetworkOperation *) ) ); connect( &op, SIGNAL( finished( QNetworkOperation * ) ), this, SLOT( slotFinished( QNetworkOperation *) ) ); } void MyClass::slotInsertEntries( const QValueList<QUrlInfo> &info, QNetworkOperation * ) { QValueList<QUrlInfo>::ConstIterator it = info.begin(); for ( ; it != info.end(); ++it ) { const QUrlInfo &inf = *it; qDebug( "Name: %s, Size: %d, Last Modified: %s", inf.name().latin1(), inf.size(), inf.lastModified().toString().latin1() ); } } void MyClass::slotStart( QNetworkOperation * ) { qDebug( "Start reading '%s'", op.toString().latin1() ); } void MyClass::slotFinished( QNetworkOperation *operation ) { if ( operation->operation() == QNetworkProtocol::OpListChildren ) { if ( operation->state() == QNetworkProtocol::StFailed ) qDebug( "Couldn't read '%s'! Following error occurred: %s", op.toString().latin1(), operation->protocolDetail().latin1() ); else qDebug( "Finished reading '%s'!", op.toString().latin1() ); } }
These examples explained now how to use the QUrlOperator and QNetworkOperations. The network extension will contain some good examples for this too.
Implementing your own Network Protocol
QNetworkProtocol provides a base class for implementations of network protocols and an architecture to a dynamic registration and unregistration of network protocols. If you use this architecture you also don't need to care about asynchronous programming, as the architecture hides this and does all the work for you.
Limitation: As it is quite hard to design a base class for network protocols which satisfies all network protocols, the architecture described here is designed to work with all kinds of hierarchical structures, like filesystems. So everything which can be interpreted as hierarchical structure and accessed via URLs, can be implemented as network protocol and easily used in Qt. This is not limited to filesystems only!
To implement a network protocol create a class derived from QNetworkProtocol.
Other classes will use this network protocol implementation to operate on it. So you should reimplement following protected members
void QNetworkProtocol::operationListChildren( QNetworkOperation *op ); void QNetworkProtocol::operationMkDir( QNetworkOperation *op ); void QNetworkProtocol::operationRemove( QNetworkOperation *op ); void QNetworkProtocol::operationRename( QNetworkOperation *op ); void QNetworkProtocol::operationGet( QNetworkOperation *op ); void QNetworkProtocol::operationPut( QNetworkOperation *op );
Some words about how to reimplement these methods: You always get a pointer to a QNetworkOperation as argument. This pointer holds all information about the operation in the current state. If you start processing such an operation, set the state to QNetworkProtocol::StInProgress. If you finished processing the operation, set the state to QNetworkProtocol::StDone if it was successful or QNetworkProtocol::StFailed if an error occurred. If an error occurred you have to set an error code (see QNetworkOperation::setErrorCode() ) and if you know some details (e.g. an error message) you can also set this message to the operation pointer (see QNetworkOperation::setProtocolDetail() ). Also you get all information (type, arguments, etc.) of the operation from this QNetworkOperation pointer. For details about which arguments you can get and set look at the class documentation of QNetworkOperation.
If you reimplement such an operation method, it's also very important to emit the correct signals at the correct time: In general always emit at the end of an operation (when you either successfully finished processing the operation or and error occurred) the finished() signal with the network operation as argument. The whole network architecture relies on correctly emitted finished() signals! So be careful with that! Then there are some more special signals which are specific to operations:
- Emit in operationListChildren:
- start() just before starting listing the children
- newChildren() when new children are read
- Emit in operationMkDir:
- createdDirectory() after the directory has been created
- newChild() (or newChildren()) after the directory has been created (as a new directory is a new child)
- Emit in operationRemove:
- removed() after the child has been removed
- Emit in operationRename:
- itemChanged() after the child has been renamed
- Emit in operationGet:
- data() each time new data has been read
- dataTransferProgress() each time new data has been read to indicate how much of the data has been read now.
- Emit in operationPut:
- dataTransferProgress() each time data has been written to indicate how much of the data has been written. Although you know the whole data when this operation is called, it's suggested not to write the whole data at once, but to do it step by step to avoid blocking the GUI and also this way the progress can be made visible to the user.
And remember, always emit the finished() signal at the end!
For more details about the arguments of these signals take a look at the QNetworkProtocol class documentation.
Now, as argument in such a method you get the QNetworkOperation which you process. Here is a list which arguments of the QNetworkOperation you can get and which you have to set in which method:
(To get the URL on which you should work, use the QNetworkProtocol::url() method which returns the pointer to the URL operator. Using that you can get the path, host, name filter and everything else of the URL)
- In operationListChildren:
- Nothing.
- In operationMkDir:
- QNetworkOperation::arg( 0 ) contains the name of the directory which should be created
- In operationRemove:
- QNetworkOperation::arg( 0 ) contains the name of the file which should be removed. Normally this is a relative name. But it may be absolute too, so use QUrl( op->arg( 0 ) ).fileName() to get the filename.
- In operationRename:
- QNetworkOperation::arg( 0 ) contains the name of the file which should be renamed
- QNetworkOperation::arg( 1 ) contains the name to which it should be renamed.
- In operationGet:
- QNetworkOperation::arg( 0 ) contains the full URL of the file which should be retrieved.
- In operationPut:
- QNetworkOperation::arg( 0 ) contains the full URL of the file in which the data should be stored.
- QNetworkOperation::rawArg( 1 ) contains the data which should be stored in QNetworkOperation::arg( 0 )
So, to sum it up: If you reimplement such an operation method, you have to emit some special signals and always at the end a finished() signal, either on success or on failure. Also you have to change the state of the QNetworkOperation during processing it and can get and set arguments of the operation as well.
But it's unlikely that the network protocol you implement supports all these operations. So, just reimplement the operations, which are supported by the protocol. Additionally you have to specify which operations are supported then. This is done by reimplementing
int QNetworkProtocol::supportedOperations() const;
In your implementation of this method return an int value which is constructed by or'ing together the correct values (supported operations) of the following enum (of QNetworkProtocol):
enum Operation { OpListChildren = 1, OpMkDir = 2, OpRemove = 4, OpRename = 8, OpGet = 32, OpPut = 64 };
So, if your protocol e.g. supports listing children and renaming them, do in your implementation of supportedOperations():
return OpListChildren | OpRename;
The last method you have to reimplement is
bool QNetworkProtocol::checkConnection( QNetworkOperation *op );
Here you have to return TRUE, if the connection is up and ok (this means operations on the protocol can be done). If the connection is not ok, return FALSE and start to try opening it. If you will not be able to open the connection at all (e.g. because the host is not found), emit a finished() signal and set an error code and the QNetworkProtocol::StFailed state to the QNetworkOperation pointer you get here.
Now, you never need to check before doing an operation yourself, if the connection is ok. The network architecture does this, this means using checkConnection() it looks if an operation could be done and if not, it tries it again and again for some time and only calls an operation method if the connection is ok.
Using this knowledge it should be possible to implement network protocols. Finally to be able to use it with a QUrlOperator (and so e.g. in the QFileDialog), you have to register the network protocol implementation. This can be done like this:
QNetworkProtocol::registerNetworkProtocol( "myprot", new QNetworkProtocolFactory<MyProtocol> );
In this case MyProtocol would be a class you implemented like described here (derived from QNetworkProtocol) and the name of the protocol would be myprot. So if you want to use it, you would do something like
QUrlOperator op( "myprot://host/path" ); op.listChildren();
Finally as example for a network protocol implementation you could look at the implementation of QLocalFs. The network extension will also contain an example implementation of a network protocol
Error Handling
Error handling is important for both, implementing new network protocols and using them (through QUrlOperator). So first some words about error handling when using the network protocols:
As already mentioned quite some times after processing an operation has been finished the network operation and so the QUrlOperator emits the finished() signal. This has as argument the pointer to the processed QNetworkOperation. If the state of this operation is QNetworkProtocol::StFailed, the operation contains some more information about this error. Following error codes are defined in QNetworkProtocol:
- QNetworkProtocol::NoError - No error occurred
- QNetworkProtocol::ErrValid - The URL you are operating on is not valid
- QNetworkProtocol::ErrUnknownProtocol - There is no protocol implementation available for the protocol of the URL you are operating on (e.g. if the protocol is http and no http implementation has been registered)
- QNetworkProtocol::ErrUnsupported - The operation is not supported by the protocol
- QNetworkProtocol::ErrParse - Parse error of the URL
- QNetworkProtocol::ErrLoginIncorrect - You needed to login but the username and or password are wrong
- QNetworkProtocol::ErrHostNotFound - The specified host (in the URL) couldn't be found
- QNetworkProtocol::ErrListChildren - An error occurred while listing the children
- QNetworkProtocol::ErrMkDir - An error occurred when creating a directory
- QNetworkProtocol::ErrRemove -An error occurred while removing a child
- QNetworkProtocol::ErrRename - An error occurred while renaming a child
- QNetworkProtocol::ErrGet - An error occurred while getting (retrieving) data
- QNetworkProtocol::ErrPut - An error occurred while putting (uploading) data
- QNetworkProtocol::ErrFileNotExisting - A file which is needed by the operation doesn't exist
- QNetworkProtocol::ErrPermissionDenied - The permission for doing the operation has been denied
QNetworkOperation::errorCode() returns then one of these codes or maybe a different one if you use an own network protocol implementation which defines additional error codes.
QNetworkOperation::protocolDetails() may also return a string which contains an error message then which could e.g. be displayed for the user.
According to this information it should be possible to react on errors.
Now, if you implement your own network protocol, you will need to tell about errors which occurred. First you always need to be able to access the QNetworkOperation which is processed at the moment. This can be done using QNetworkOperation::operationInProgress(), which returns a pointer to the current network operation or 0 if no operation is processed at the moment.
Now if and error occurred and you need to handle it, do
if ( operationInProgress() ) { operationInProgress()->setErrorCode( error_code_of_your_error ); operationInProgress()->setProtocolDetails( detail ); // optional! emit finished( operationInProgress() ); return; }
That's all. The connection to the QUrlOperator and so on is done automatically. Additionally, if the error was really bad so that no more operations can be done in the current state (e.g. if the host couldn't be found), call QNetworkProtocol::clearOperationStack() before emitting finished().
Now, as error code you should use, if possible, one of the predefined error codes of QNetworkProtocol. If this is not possible, you can add own error codes - they are just normal integers. Just be careful that the value of the error code doesn't conflict with an existing one.
Documentation about the low-level classes like QSocket, QDns, etc. will be included in the seperate network extension.
For internal use only.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论