QApplication类管理图形用户界面应用程序的控制流和主要设置。
它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。
对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
QApplication对象是可以通过全局变量qApp访问。因为QApplication对象做了如此多的初始化,它必须在所有与用户界面相关的其它类被创建之前被创建。因为它也处理命令行参数,在应用程序中对argv解释和修改之前创建它通常是一个好主意。
QAction类提供了一个可以同时出现在菜单和工具条上的抽象用户界面操作。
在图形用户界面应用程序中很多命令可以通过菜单选项、工具条按钮和键盘快捷键调用。因为同一个操作将会被执行,而与它的调用方法无关,并且因为菜单和工具条必须保持同步,所以提供一个操作这样的命令很有用。一个操作可以被添加到菜单和工具条中并且将会自动使它们同步。例如,如果用户按下“加粗”工具条按钮,“加粗”菜单项将会自动被选中。
QAction可以包含图标、菜单文本、快捷键、状态条文本、这是什么文本和工具提示。它们可以分别通过setIconSet()、setText()、setMenuText()、setToolTip()、setStatusTip()、setWhatsThis()和setAccel()来设置。建议把操作作为它所在的窗口的子对象来创建。在绝大多数情况下操作是应用程序主窗口的子对象。为了防止循环,不要在一个稍后要添加操作的窗口部件的子对象中创建操作。
QColorDialog类提供了指定颜色的对话框窗口部件。
颜色对话框函数允许用户来选择颜色——例如,你也许在一个绘制程序中使用它来允许用户设置画刷颜色。静态函数提供模式颜色对话框。getColor()静态函数显示对话框并且允许用户指定一个颜色。getRgba()函数可以做同样的事情但是也允许用户指定一个有alpha通道(透明)值的颜色。用户可以用customCount()来存储不同的自定义颜色。自定义颜色被所有颜色对话框共享,并且在这个程序执行期间被记住。使用setCustomColor()来设置自定义颜色,并且使用customColor()来得到它们。
QDataBrowser类为数据输入表单提供数据操作和导航。
提供了一个高级API,用于浏览游标中的数据记录,插入,更新和删除记录,以及刷新显示中的数据。如果您想要一个只读表单来呈现数据库数据,请使用QDataView ; 如果您想要基于表格的数据表示,请使用QDataTable。
QDataBrowser用于将数据集与表单关联,其方式与QDataTable将数据集与表关联的方式非常相似。一旦构建了数据浏览器,它就可以与具有setSqlCursor()的数据集相关联,并与具有setForm()的表单相关 联。可以分别使用setBoundaryChecking(),setSort()和setFilter()设置边界检查,排序和过滤 。
QDateTimeEdit 类将QDateEdit和QTimeEdit 小部件组合到单个小部件中以编辑日期时间。QDateTimeEdit由并排放置的QDateEdit和QTimeEdit小部件组成,并提供两者的功能。用户可以使用键盘或箭头键来编辑日期和时间,以增加/减少日期或时间值。Tab键可用于在QDateTimeEdit小部件中从一个部分移动到另一个部分,并且当用户使用setAutoAdvance()完成一个部分时,可以自动移动该用户 。可以使用setDateTime()设置日期时间。
QDial类提供圆弧范围控制(如速度计或电位计)。当用户需要控制程序可定义范围内的值时,使用QDial,并且该范围要么环绕(通常为0-359度),要么对话框布局需要方形小部件。
QDict类是一个模板类,它提供基于QString键的字典。QMap是此类的STL兼容替代品。QDict实现为模板类。定义模板实例QDict
如果要使用非Unicode,普通的8位字符*键,请使用 QAsciiDict模板。QDict具有与QAsciiDict相同的性能。如果你想要一个将QStrings映射到QStrings的字典,请使用QMap。字典的大小()是非常重要的。为了获得良好的性能,您应该使用适当大的素数。合适的方法等于或大于字典项的最大预期数。大小在构造函数中设置,但可以使用resize()更改。
QdockWidget为停靠窗口(浮动窗)的类。
QFileDialog类提供了允许用户选择文件或者目录的对话框。
最简单的方式是使用静态函数来创建一个QFileDialog。在Windows上,这些静态函数将调用本地Windows文件对话框并且在Mac OS X上,这些静态函数将调用本地Mac OS X文件对话框。
QString s = QFileDialog::getOpenFileName(
"/home",
"Images (*.png *.xpm *.jpg)",
this,
"open file dialog"
"Choose a file" );
在上面的实例中,一个模式对话框被使用静态函数来创建。开始目录被设置为“/home”。文件过滤器被设置为“Images (*.png *.xpm *.jpg)”。文件对话框的父对象被设置为this并且它被给定一个标识名称——“open file dialog”。文件对话框上面的标题被设置为“Choose a file”。
你可以不使用静态函数创建你自己的QFileDialog。通过调用setMode(),你可以设置可以从QFileDialog返回什么。
QFileDialog* fd = new QFileDialog( this, "file dialog", TRUE );
fd->setMode( QFileDialog::AnyFile );
在上面的实例中,文件对话框的模式被设置为AnyFile,也就是说用户可以设置任何文件或者甚至指定一个不存在的文件。这个模式对于创建一个“File Save As”文件对话框。如果用户必须选择存在的文件,请使用ExistingFile,或者如果可以选择目录,请使用Directory。(模式的完整列表请参考QFileDialog::Mode枚举变量。)
你可以通过mode()重新得到对话框的模式。也可以使用setFilter()来设置对话框的文件过滤器。
fd->setFilter( "Images (*.png *.xpm *.jpg)" );
QFont类指定用于绘制文本的字体。
创建QFont对象时,指定希望字体具有的各种属性。Qt将使用具有指定属性的字体,或者如果不存在匹配的字体,Qt将使用最接近的匹配安装字体。实际使用的字体属性可从QFontInfo对象中检索。如果窗口系统提供完全匹配,则exactMatch()返回TRUE。使用QFontMetrics获取测量值,例如使用QFontMetrics :: width()的字符串像素长度。使用QApplication :: setFont()设置应用程序的默认字体。
QFontDialog类提供了可以选择字体的对话框窗口部件。使用这个类的常用方法是调用静态函数中的一个。
QGLWidget类是用于呈现OpenGL图形的小部件。
QGLWidget提供了显示集成到Qt应用程序中的OpenGL *图形的功能。它使用起来非常简单。您继承它并像任何其他QWidget一样使用子类,除了使用标准OpenGL渲染命令而不是使用QPainter等绘制窗口小部件的内容。
QGLWidget提供了三个方便的虚函数,您可以在子类中重新实现以执行典型的OpenGL任务:
paintGL() - 渲染OpenGL场景。每当需要更新小部件时都会调用它。
resizeGL() - 设置OpenGL视口,投影等。每当调整窗口小部件的大小时(以及第一次显示它时,都会调用它,因为所有新创建的窗口小部件都会自动获得调整大小事件)。
initializeGL() - 设置OpenGL渲染上下文,定义显示列表等。在第一次调用resizeGL()或paintGL()之前调用一次。
QGroupBox窗口部件提供了一个有标题的组合框。
组合框提供一个框架、一个标题和一个键盘快捷键,并且显示在它里面地其它不同窗口部件。标题在上面,键盘快捷键移动键盘焦点到组合框的一个子窗口部件,并且子窗口部件将会排列在这个框架中地一个数组中。
使用它的最简单方式是创建一个为你所想要的列数(或者行数)和方向的组合框,并且然后创建其它窗口部件时,把这个组合框作为父对象。
QGuardedPtr类是一个提供被监视的QObject的指针的模板类。
一个被监视的指针,QGuardedPtr
只要你需要存储一个被其它的所拥有的并且有可能在你还保留它的引用的时候它已经被销毁了的QObject的指针的时候,被监视的指针就是有用的。你可以安全地测试指针的有效性。
实例:
QGuardedPtr
label->setText( "I like guarded pointers" );
delete (QLabel*) label; // 模拟某人销毁了这个标签
if ( label)
label->show();
else
qDebug("The label has been destroyed");
这个程序将会输出
The label has been destroyed
而不是解除引用的label->show()的一个无效地址。
QGuardedPtr提供的函数和操作符和普通的未被监视的指针提供的一样,除了指针的算术运算(++、--、-和+),它们通常只对数组对象有用。把它们用作普通的指针,你就不需要再都这份类文档了。
为了创建被监视的指针,你可以通过一个X*或者另一个同类型的被监视的指针来构造和赋值。你可以用operator==()来比较它们是不是相等,用operator!=()来比较它们是不是不等,或者用isNull()来测试它是否为零。并且你可以使用*x或x->member符号来解除引用。
被监视的指针会自动地抛出X*,所以你可以自由地混合被监视的和未被监视的指针。这也就是说如果你有一个QGuardedPtr,你可以把它传递给一个需要QWidget*的函数。因为这个原因,在声明函数中使用一个QGuardedPtr作为参数,没有多少价值,所以请使用普通的指针。当你长时间保存一个指针的时候,请使用QGuardedPtr。
请再次注意X类必须继承QObject,否则会得到一个编译或者链接错误。
QIconSet类提供了一组具有不同样式和大小的图标。
QIconSet可以从给定的图标集生成更小,更大,活动和禁用的像素图。QToolButton,QHeader,QPopupMenu等使用这样的像素图 来显示表示特定动作的图标。
QIconSet最简单的用法是从QPixmap创建一个然后使用它,允许Qt计算出所有必需的图标样式和大小。例如:
QToolButton * tb = new QToolButton(QIconSet(QPixmap(“open.xpm”)),...);
使用您指定的基准像素图,QIconSet提供一组六个图标,每个图标都有一个大小和一个模式:
Small Normal 、Small Disabled 、Small Active 、Large Normal 、Large Disabled 、Large Active。
QInputDialog类提供了从用户那里得到一个单一值的简单方便的对话框,就是与用户交互,让用户输入一个值继续操作的弹出对话框。
输入值可以是字符串、数字或者列表中的一项。必须设置标签来告诉用户应该输入什么。这里有四个方便的函数被提供:getText()、getInteger()、getDouble()和getItem()。所有这些函数都可以按相似的方式使用
QLCDNumber小组件显示一个类似LCD的数字。
它可以显示几乎任何大小的数字。它可以显示十进制,十六进制,八进制或二进制数。使用display()插槽很容易连接到数据源,该插槽被重载以采用五种参数类型中的任何一种。
QLibrary类提供了处理共享库的包装器。
QLibrary对象的实例可以处理单个共享库,并以独立于平台的方式提供对库中功能的访问。如果库是组件服务器,QLibrary提供对导出组件的访问,并且可以直接在此组件中查询接口。
QLibrary确保共享库已加载并在使用时保留在内存中。QLibrary还可以在销毁时卸载库并释放未使用的资源。
QLibrary的典型用法是解析共享对象中的导出符号,并调用此符号表示的函数。与“隐式链接”相比,这称为“显式链接”,这是在将可执行文件与库链接时由构建过程中的链接步骤完成的。
QListBox部件提供可选择的只读项列表。这通常是单列列表,其中选择了零个或一个项目,但它也可以以许多其他方式使用。
QListView类实现列表/树视图。它可以显示和控制多列项的层次结构,并提供随时添加新项的功能。其中,用户可以选择一个或多个项目,并按任何列按递增或递减顺序对列表进行排序。
最简单的使用方法是创建一个QListView,使用addColumn()添加一些列标题,并使用QListView作为父项创建一个或多个QListViewItem或 QCheckListItem对象
QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。
主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。
QMap类是一个基于值的模板类,它提供了一个字典。QMap是类似STL的地图容器的Qt实现。如果标准地图不可用,它可以在您的应用程序中使用。QMap是Qt模板库的一部分。
QMap
QMap包含并管理Data类型的对象集合以及Key类型的关联键值,并提供允许对包含的对象进行寻址的迭代器。QMap拥有包含的项目。某些类不能在QMap中使用。例如,从QObject派生的所有内容以及实现小部件的所有类。只能在QMap中使用值。要获得作为价值的资格,该课程必须提供
拷贝构造函数
赋值运算符
默认构造函数,即不带任何参数的构造函数。
请注意,如果未提供显式版本,则C ++默认为逐字段赋值运算符和复制构造函数。
QMenuBar类提供水平菜单栏。菜单栏包含下拉菜单项列表。您使用insertItem()添加菜单项。例如,假设菜单栏是指向QMenuBar的指针,而filemenu是指向QPopupMenu的指针 ,则以下语句将菜单插入菜单栏:
menubar-> insertItem(“&File”,filemenu);
菜单项文本中的&符号将Alt + F设置为此菜单的快捷方式。(您可以使用“&&”在菜单栏中获得真正的&符号。)项目已启用或已禁用。您可以使用setItemEnabled()切换其状态 。
没有必要布置菜单栏。它会自动将自己的几何体设置到父窗口小部件的顶部,并在调整父窗口大小时适当地更改它。使用菜单项创建菜单栏的示例:
QPopupMenu * file = new QPopupMenu(this);
file-> insertItem(p1,“&Open”,this,SLOT(open()),CTRL + Key_O);
file-> insertItem(p2,“&New”,this,SLOT(news()),CTRL + Key_N);
menu = new QMenuBar(this);
menu-> insertItem(“&File”,file);
在大多数主窗口样式应用程序中,您将使用QMainWindow中提供的menuBar(),将QPopupMenu添加到菜单栏并将QAction添加到弹出菜单中。示例:
QPopupMenu * file = new QPopupMenu(this);
menuBar() - > insertItem(“&File”,file);
fileNewAction-> addTo(file);
菜单项可以包含文本和像素图(或图标集)
QMovie类提供动画或图像的增量加载,随着它的进展发出信号。显示QMovie的最简单方法是使用QLabel和 QLabel :: setMovie()。
QMovie提供QPixmap作为framePixmap(); 可以通过connectResize()和connectUpdate()进行连接,以接收大小和像素图变化的通知。所有解码都由正常的事件处理机制驱动。
一旦创建QMovie,电影就开始播放(实际上,一旦控制返回到事件循环)。当播放电影中的最后一帧时,如果在输入源中定义了这样的循环,它可以循环回到开始。QMovie对象是明确共享的。这意味着从另一个QMovie复制的QMovie将始终显示相同的帧。如果一部共享电影暂停,则暂停。要制作独立电影,必须单独构建。QMovie支持的数据格式集由已安装的解码器工厂决定; 输入的格式在输入被解码时确定。
支持的格式为MNG(如果Qt配置为启用了MNG支持)和GIF。在未来的Qt版本中可能会完全删除GIF支持。我们建议使用MNG或PNG格式。
QNetworkProtocol类为网络协议提供通用API。
这是一个基类,应该用于网络协议实现,然后可以在Qt中使用(例如在文件对话框中)和QUrlOperator。
实现新网络协议的最简单方法是重新实现operation*()方法,例如operationGet()等,只应重新实现支持的操作。要指定支持哪些操作,要重新实现supportedOperations()并使用QNetworkProtocol :: Operation枚举中支持的操作返回一个OR的int 。
以这种方式实现网络协议时,发出正确的信号非常重要。此外,在操作完成时(成功和失败时)始终发出finished()信号。Qt依赖于正确发出的finished()信号。
QPainter类低水平的绘制,例如在窗口部件上。
绘制工具为做到绝大部分绘制图形用户界面程序的需要提供了高度优化的函数。QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状。它也可以绘制排列的文本和像素映射。通常,它在一个“自然的”坐标系统中绘制,但是它也可以在视和世界转换中做到这些。
绘图工具的典型用法是:
构造一个绘图工具。
设置画笔、画刷等等。
绘制。
销毁这个绘图工具。
绝大多数情况下,所有这些是在一个绘制事件中完成的。(实际上,99%的QPainter使用是在QWidget::paintEvent()的重新实现中,并且绘制工具已经为这种用法高度优化了。)这里是一个非常简单的实例:
void SimpleExampleWidget::paintEvent()
{
QPainter paint( this );
paint.setPen( Qt::blue );
paint.drawText( rect(), AlignCenter, "The Text" );
}
QPalette类包含每个窗口小部件状态的颜色组。
调色板由三个颜色组组成:active, disabled, 和 inactive。所有小部件都包含一个调色板,Qt中的所有小部件都使用它们的调色板来绘制自己。这使得用户界面易于配置,更易于保持一致。
如果您创建一个新的小部件,我们强烈建议您使用调色板中的颜色而不是硬编码特定的颜色。颜色组:
Active()组用于具有窗口键盘焦点。
Inactive()组用于其他窗口。
Disabled()组用于那些由于某种原因禁用部件(未视窗)。
活动和非活动窗口都可以包含禁用的小部件。(已禁用的小部件通常称为无法访问或灰显。)
QPixmap类是一个基于像素的离屏绘制设备。
QPixmap是Qt为处理图像提供的两个类之一; 另一个是QImage。QPixmap专为绘图而设计和优化; QImage专为I / O和直接像素访问/操作而设计和优化。有(慢)函数在QImage和QPixmap之间转换:convertToImage()和 convertFromImage()。
QPixmap类的一个常见用途是实现小部件的平滑更新。每当需要绘制复杂的东西时,您都可以使用像素图来获得无闪烁的绘图,如下所示:
创建与窗口小部件大小相同的像素图。
使用小部件背景颜色填充像素图。
绘制像素图。
bitBlt()将pixmap内容放到小部件上。
像素图中的像素数据是内部的,由底层窗口系统管理。只能通过QPainter函数,bitBlt()以及将QPixmap转换为QImage 来访问像素 。您可以使用QLabel :: setPixmap()在屏幕上轻松显示QPixmap 。例如,所有QButton子类都支持pixmap使用。
QPixmap类使用copy-on-write,因此按值传递QPixmap对象是切实可行的。
QPoint类定义了平面上的一个点。一个点由一个x坐标和一个y坐标确定。坐标类型是QCOORD(一个32位整数)。QCOORD的最小值是QCOORD_MIN(-2147483648),最大值是QCOORD_MAX(2147483647)。坐标可以通过函数x()和y()来访问,它们可以由setX()和setY()来设置并且由rx()由ry()来参考。
QPopupMenu类提供了一个弹出菜单小部件。
弹出菜单小部件是选择菜单。它可以是菜单栏中的下拉菜单,也可以是独立的上下文(弹出)菜单。当用户单击相应项目或点击指定的快捷键时,菜单栏会显示下拉菜单。使用QMenuBar :: insertItem()将弹出菜单插入菜单栏。与popup()异步显示上下文菜单或与exec()同步显示上下文菜单。
从技术上讲,弹出菜单包含菜单项列表。您使用insertItem()添加项目。项是字符串,像素图或提供其自己的绘图功能的自定义项(请参阅 QCustomMenuItem)。此外,项目可以在最左侧绘制可选图标,并使用加速键,例如“Ctrl + X”。
有三种菜单项:分隔符,执行操作的菜单项和显示子菜单的菜单项。使用insertSeparator()插入分隔符。对于子菜单,在调用insertItem()时将指针传递给QPopupMenu。所有其他项目都被视为行动项目。
插入操作项时,通常指定接收器和插槽。只要选择了项目,接收器就会被通知。此外,QPopupMenu提供两个信号,activate()和highlight(),它们发出相应菜单项的标识符信号。将多个项目连接到一个插槽有时很实用。要区分它们,请指定一个带整数参数的槽,并使用setItemParameter()将唯一值与每个项相关联。
使用clear()清除弹出菜单,并使用removeItem()或removeItemAt()删除单个项目 。使用setCheckable(TRUE)启用时,弹出菜单可以显示某些项目的复选标记。使用setItemChecked()检查或取消选中项目 。
项目已启用或已禁用。您可以使用setItemEnabled()切换其状态 。在弹出菜单变为可见之前,它会发出aboutToShow()信号。您可以使用此信号在用户看到之前设置所有菜单项的正确启用/禁用状态。菜单再次隐藏时会发出相应的aboutToHide()信号。
你可以提供这是什么?使用setWhatsThis()帮助单个菜单项(轻量级在线帮助的一般信息)
QPrinter类是在打印机上绘制的绘图设备。在Windows上,它使用内置的打印机驱动程序。在X11上,它生成postscript并将其发送到lpr,lp或其他打印命令。
QPrinter的使用方式与使用QWidget和QPixmap的方式大致相同。最大的区别是你必须跟踪页面。QPrinter支持许多可设置的参数,当应用程序调用QPrinter :: setup()时,大多数参数可由最终用户更改 。
QProcess类用于启动外部程序并与它们通信。
您可以写入已启动程序的标准输入,并可以读取程序的标准输出和标准错误。您可以在构造函数中使用命令行参数或使用setArguments()或addArgument()将命令行参数传递给程序。可以使用setWorkingDirectory()设置程序的工作目录。如果需要设置环境变量,请将它们传递给start()或 launch()函数(见下文)。所述processExited如果程序退出()信号被发射。程序的退出状态可以从exitStatus()获得,尽管你可以简单地调用 normalExit()来查看程序是否正常终止。
启动流程有两种不同的方法。如果您只想运行程序,可选择将数据传递到开头的标准输入,请使用其中一个launch()函数。如果要完全控制程序的标准输入(特别是如果您不知道要在开始时发送到标准输入的所有数据),请使用start()函数。
QProgressBar部件提供水平进度条。
QProgressDialog类提供了慢操作的进度的反馈。
进度对话框用于给用户这个操作还要有多长时间的指示,并且证明这个应用程序还没有冻结。它也给用于一个中止这个操作运行的机会。
进度对话框的一个常见问题是很难知道什么时候使用它们,操作在不同的硬件会占用不同的时间。QProgessDialog提供了对这个问题的解决方案:它估计操作将占用的时间(基于没步的时间),并且如果它超过minimumDuration()(默认为4秒)才显示自己。
使用setTotalSteps()(或者在构造函数中)设置操作中的“步”数并且调用setProgress()作为操作进度。步值的选择是任意的。它可以是复制的文件数,接收的字节数,在你的算法的主循环中的反复次数,或者一些其它的适合单元。进度从0开始,并且当你把totalSteps()作为参数调用setProgress(),这个进度对话框会显示这个操作已经完成。
对话框会在操作结束的时候自动重置并且隐藏自己。使用setAutoReset()和setAutoClose()可以改变这个行为。
这里有使用QProgressDialog的两种方法:模式和非模式。
对于程序员,使用模式QProgressDialog是更简单的,但是你必须调用qApp->processEvents()来保持事件循环的运行来确保应用程序没有冻结。在循环中执行这个操作,在间隔中调用setProgress(),并且检查wasCancelled()的取消。
QDir::toNativeSeparators:Qt是跨平台的,windows的文件路径分隔符是\,而linux的分隔符为/,要实现window下编写的程序直接应用到linux下, 在构造文件路径时,可以用QDir::toNativeSeparators。
QRadioButton小部件提供带有文本或像素图标签的单选按钮。
QRadioButton和QCheckBox都是选项按钮。也就是说,它们可以打开(选中)或关闭(未选中)。这些类在限制用户选择的方式上有所不同。复选框定义“许多”选项,而单选按钮提供“众多”选择之一。在一组单选按钮中,一次只能检查一个按钮; 如果用户选择另一个按钮,则关闭先前选择的按钮。
实现“众多”选择的最简单方法就是将单选按钮放入QButtonGroup。
无论何时打开或关闭按钮,它都会发出切换信号 ()。如果要在每次按钮更改状态时触发操作,请连接此信号。否则,使用isChecked()来查询是否选择了特定按钮。
就像QPushButton一样,单选按钮可以显示文本或像素图。可以在构造函数中设置文本,也可以使用setText(); pixmap是用setPixmap()设置的。
QRect类定了平面上的矩形。一个矩形在内部是由左上角和右下角表示的,但是通常它所表达到是一个左上角和一个大小。坐标类型是QCOORD(和int一样在qwindowdefs.h中定义的)。注意矩形的大小(宽和高)也许与你通常所用的所有不同。如果左上角和右下角相同,那么这个矩形的宽和高都为1。
QRegExp类使用正则表达式提供模式匹配。
QScrollView窗口部件提供了一块在需要时可以出现滚动条的滚动区域。
QScrollView是一个很大的画布——可能比底下窗口系统通常支持的坐标系统大得多。这很重要,因为它很容易超越这些限制(例如,一些网页的高度超过32000像素)。另外,QScrollView可以有一个被放置的QWidget,可以在画出的内容上滚动。这些子窗口部件也可以放在普通坐标范围的外面(但是它们还被限制在大小之内)。
QSettings类提供与持久性平台无关的应用程序设置。
在Unix系统上,QSettings使用文本文件来存储设置。在Windows系统上,QSettings使用系统注册表。在Mac OS X上,QSettings将在Unix上运行,并存储到文本文件。每个设置包括识别密钥和与密钥相关联的数据。键是一个unicode字符串,由两个或多个子键组成。子键是斜杠,“/”,后跟一个或多个unicode字符(不包括斜杠,换行符,回车符和等号,'=',符号)。称为条目或值的关联数据可以是布尔值,整数,双精度,字符串或字符串列表。条目字符串可以包含任何unicode字符。如果你想保存和恢复整个桌面的设置,即哪些应用程序正在运行,使用QSettings保存设置为每个应用程序和QSessionManager节省桌面的会话。
QSound提供对平台音频设备的访问。
Qt提供了在大多数GUI应用程序中通常都需要的操作:异步播放声音文件。这用一个单呼叫就能简单的完成:
QSound::play("mysounds/bells.wav");
第二个API是被用来根据一个声音文件创建一个QSound对象并且随后就播放它:
QSound bells("mysounds/bells.wav");
bells.play();
用以上第二种方式播放声音虽然也许会消耗更多的内存,但依靠底层平台的音频设备,比起第一种方式播放声音起来更直接。
在微软Windows下使用的底层多媒系统,仅支持WAVE格式的声音文件。
在X11下有效的使用了网络音频系统,另外所有的操作工作都在默默的进行着。NAS支持WAVE和AU文件。
QSpinBox类提供了一个旋转框小部件(旋转按钮)。
QSpinBox允许用户通过单击向上/向下按钮来增加/减少当前显示的值或通过直接在旋转框中键入值来选择值。如果将值直接输入到旋转框中,则必须按下“键输入”才能应用新值。该值通常是整数。
每次值更改时,QSpinBox都会发出valueChanged()信号。可以使用value()获取当前值,并使用setValue()进行设置 。
旋转框将值保持在数值范围内,并保持为lineStep()大小的倍数(有关详细信息,请参阅QRangeControl)。单击向上/向下按钮或使用键盘加速器的向上和向下箭头将以大小为lineStep()的步长增加或减少当前值。可以使用其中一个构造函数设置最小值和最大值以及步长,稍后可以使用setMinValue(),setMaxValue()和setLineStep()进行更改。
大多数旋转框都是方向性的,但QSpinBox也可以作为圆形旋转框运行,即如果范围是0-99并且当前值是99,单击“向上”将给出0. 如果想要循环行为,请使用setWrapping()。
显示的值可以预先添加并附加任意字符串,表示例如货币或计量单位。请参见setPrefix()和setSuffix()。旋转框中的文本使用text()(包括任何前缀()和 后缀())或cleanText()(没有前缀(),没有后缀()和没有前导或尾随空格)来检索。currentValueText()将旋转框的当前值作为文本返回。
QSql类是一个Qt SQL的全局标示符命名空间。通常情况下,你可以忽视它。许多Qt SQL类继承它,所以Qt SQL命名空间中的所有标示符都是可见的,而没有受到任何限制。
QSqlDatabase类用于创建SQL数据库连接并提供事务处理。此类用于创建与SQL数据库的连接。它还为那些支持事务的数据库驱动程序提供事务处理功能。
QSqlDatabase类本身提供了一个抽象接口,用于访问许多类型的数据库后端。内部使用特定于数据库的驱动程序来实际访问和操作数据(请参阅 QSqlDriver)。结果集对象提供了执行和操作SQL查询的接口
QSqlQuery类提供了一种执行和操纵SQL语句的方式。
QSqlQuery包括了所有的功能,像在一个QSqlDatabase上执行SQL查询创建、导航和索取数据等等。 它可以执行DML(数据操作语言)语句,比如 SELECT, INSERT, UPDATE 和 DELETE, 还可以执行DDL(数据定义语言)语句,比如:CREATE TABLE。 不仅如此,它还可以用于执行特定数据库而不是标准SQL语句的指令(比如 SET DATESTYLE=ISO 用于 PostgreSQL).
QStatusBar类提供了一个适合呈现状态信息的水平条。
每一个状态指示器都会落在下面这三种类别之内:
临时的 - 暂时地占用状态条的大部分。例如,用于解释工具提示文本或者菜单条目。
正常的 - 占用状态条的一部分并且也可能被临时的信息隐藏。例如,用于在字处理器中显示页数和行数。
永久的 - 从不被隐藏。用于重要的模式指示,例如,一些程序把大小写指示器放在状态条中。
QStatusBar让你能够显示上述所有类型的指示信息。为了显示临时的消息,请调用message()(可以把一个合适的信号和它连接起来)。如果要移除一个临时的消息,调用clear()。这里有两类消息:一类消息一直显示到下一个clear()或mesage()被调用才消失,并且另一种是有时间限制的:
connect( loader, SIGNAL(progressMessage(const QString&)),
statusBar(), SLOT(message(const QString&)) );
statusBar()->message("Loading..."); // 初始消息
loader.loadStuff(); // 发射进程消息
statusBar()->message("Done.", 2000); // 显示2秒的最后消息
正常的和永久的消息通过创建一个小窗口部件并且然后通过addWidget()把它添加到状态条中来被显示。QLabel、QProgressBar或者甚至QToolButton这些窗口部件对于添加到状态条都是很有用的。removeWidget()用于移除窗口部件。
statusBar()->addWidget(new MyReadWriteIndication(statusBar()));
默认情况下,QStatusBar在右下角提供了一个QSizeGrip。你可以使用setSizeGripEnabled(FALSE)来使它失效。
QStringList类提供字符串列表。
它用于存储和操作逻辑上属于一起的字符串。基本上QStringList中是一个QValueList的QString的 对象。与存储指向字符的指针的QStrList相反,QStringList处理真实的QString对象。无论何时使用Unicode字符串,它都是首选类。QStringList是Qt模板库的一部分。与QString本身一样,隐式共享 QStringList对象。将它们作为值参数传递既快速又安全。可以使用append(),operator + =()或 operator <<()将字符串添加到列表中,例如
字符串列表有一个迭代器,QStringList :: Iterator()。
许多Qt函数返回const字符串列表; 迭代这些你应该复制并迭代副本。
您可以使用join()将字符串列表中的所有字符串连接成单个字符串(带有可选的分隔符),例如
QString allFonts = fonts.join(“,”);
您可以使用sort()对列表进行排序,并使用grep()函数提取一个新列表,该列表仅包含包含特定子字符串(或匹配特定正则表达式)的 字符串,例如
可以将现有字符串拆分为具有字符,字符串或正则表达式分隔符的字符串列表。