Qt开发总结(13)——控件之显示控件

中间穿插了一个资源系统,也是突然有感写的。这篇笔记接着第11章——输入控件继续向下写。本篇笔记总结Qt的显示控件。Qt显示控件有以下几种:

控件名

对应类名

描述

标签

QLabel

显示文字和图片

富文本浏览器

QTextBrowser

带有超文本导航的只读文本浏览器

图形显示器

QGraphicsView

显示QGraphicsScene图形

日历表

QCalendarWidget

通常的日历

液晶数字

QLCDNumber

液晶数字显示器

进度条

QProgressBar

进度条

其他还有一些诸如Item View/Widget等控件,也可以作为显示控件,但它们同时也是输入控件。更重要的是它们是Qt的又一大技术——Model/View 框架。相关的内容会在后面的博客中单独总结。

Label

QLabel标签用于显示文字和图片。不提供用户交互功能,只用于显示。它的显示效果可以多种方式进行配置。QLabel可以显示以下内容:

内容

设置方式

Plain text

Pass a QString to setText().

Rich text

Pass a QString that contains rich text to setText().

A pixmap

Pass a QPixmap to setPixmap().

A movie

Pass a QMovie to setMovie().

A number

Pass an int or a double to setNum(), which converts the number to plain text.

Nothing

The same as an empty plain text. This is the default. Set by clear().

注意,当将一个QString传递给QLabel构造函数或是调用SetText()时,请确保首先明确输入格式。因为Qlabel 会试图猜测文本是纯文本还是富文本(HTML格式)。可以显示调用setTextFormat()函数来设置文本显示格式。

默认情况下,QLabel显示左对齐,垂直居中的文本或图像。可以用setAlignment()函数和setIndent()函数调整内容的位置。文本内容还可以调用setWordWrap()函数设置换行。QLabel继承于QFrame,QFrame的属性和方法也可以用于设置QLabel。

另外,QLabel还有个功能是为其他空间添加快捷键。如下面的代码:

QLineEdit *phoneEdit = new QLineEdit(this);

QLabel *phoneLabel = new QLabel("&Phone:", this);

phoneLabel->setBuddy(phoneEdit);

这会使得用户按下Alt+P键后,鼠标会自动定位到phoneEdit输入框中。同样的应用也可以在Button上,按下某一快捷键时相当于点击了按钮。

Text Browser

QTextBrowser提供了一个带有超文本导航的富文本浏览器。这个类扩展了只读模式下的QTextEdit类,添加了一些导航功能,这样用户就可以跟踪超文本文档中的链接了。对于QTextEdit、QTexrBrowser和QLabel大致应用范围如下:

1.如果想提供一个可编辑的富文本编辑器,那么请使用QTextEdit;

2.如果使用不带超文本导航的文本浏览器,那么使用QTextEdit;

3.如果只需要显示一小段富文本,请使用QLabel。

也即,只读的,带超文本导航的文本浏览器,使用QTextBrowser。

之前的笔记中也谈到了,QTextEdit的内容是通过setHtml()或setPlainText()函数设置的,QTextBrowser除了这两种 外,还具有setSource()函数接口,从而可以使用文档作为源文本。

QTextBrowser提供backword和forward槽函数,用以实现Back和forward按钮操作。home()槽函数将文本设置为第一个文档。

 

Graphics View

QGraphicsView是一种显示QGraphicsScene对象的显示控件。QGraphicsScene是图形视图框架中的一个类。所以它的输入内容是QGraphicsScene对象,可以通过QGraphicsScene构造函数或者setScene函数设置。调用show函数后,视图将默认滚动到场景的中心并显示可见的内容,比如:

QGraphicsScene scene;

scene.addText("Hello, world!");

 

QGraphicsView view(&scene);

view.show();

可以拖动滚动条或者centerOn()函数显示滚动到scene上的任何位置。QGraphicsView可用于显示整个场景或是部分场景,第一次显示的时候是自动检测显示区域的。可以通过setSceneRect()函数设置显示区域。通过调用render ()函数默认采用矩形的QPainter绘制和渲染图形,可以通过setRenderHints()函数改变它。默认会提供一个矩形的Widget显示视场,调用setViewport()函数可以替换它。比如通过setViewport(new QGLWidget)函数设置OpenGL视场。

QTransform类实现一些移动效果,通过setTransform()函数传递一个矩阵,或是调用一些常见的移动函数rotate(), scale(), translate() or shear()。

更加深入的应用须结合QGraphicsScene应用,这里不再展开。

Calendar Widget

QCalendarWidget就是通常意义上的日历。

默认今天的日期会被选中,用户可以用鼠标或键盘选中任意日期。用selectedDate()函数获取选中的日期,也可以通过setDateRange()设置minimumDate and maximumDate属性来限制选择的期限。封装了selectionChanged(), activated() and currentPageChanged()等信号以响应用户的用户操作。

LCD Number

QLCDNumber就是一个液晶数据显示器。这个控件因为很复古,现在已经几乎不用了。

它可以以任意大小显示数字。可以显示十进制、十六进制、八进制和二进制数字。用display()槽函数可以轻松连接数据源。当显示的数字超出了范围后会发送overflow()信号。范围通过setDigitCount函数设置。可以通过value()获取它的值,如果你就像获取显示的文本,可以用display()槽函数链接另一个槽函数来存储它的值。

 

Progress Bar

QProgressBar是常用的进度条控件。

进度条就是显示一个正在运行的应用的运行进度。通过setMinimum()、setMaximum()设置最小值和最大值以及setValue()设置单步值来设置基本属性,控件就会显示完成的百分比以显示进度。如果最小值和最大值都设置为0,控件会显示忙状态,比如,我们在某些时候并不能知道某些任务运行所需的时间(也即无法确认最小最大值),那就显示忙的状态就好了。

 

发布了76 篇原创文章 · 获赞 63 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/bjtuwayne/article/details/103434806