文章目录
布局管理
布局管理器
Qt中主要提供了QLayout类及其子类来作为布局管理器
当部件加入到一个布局管理器中,然后这个布局管理器再放到一个窗口部件上时,这个布局管理器以及它包含的所有部件都会自动重新定义自己的父对象(parent)为这个窗口部件。
基本布局管理器
QBoxLayout类可以使子部件在水平方向或者垂直方向排成一列,它将所有的空间分成一行盒子,然后将每个部件放入一个盒子中。
它有两个子类QHBoxLayout水平布局管理器和QVBoxLayout垂直布局管理器。
栅格布局管理器
QGridLayout类使得部件在网格中进行布局,它将所有的空间分隔成一些行和列,行和列的交叉处就形成了单元格,然后将部件放入一个确定的单元格中。
表单布局管理器
QFormLayout类用来管理表单的输入部件和与它们相关的标签。窗体布局管理器将它的子部件分为两列,左边是一些标签,右边是一些输入部件,比如行编辑器或者数字选择框等。
设置部件大小
凡是继承自QWidget的类都有这两个属性:大小提示(sizeHint)和最小大小提示(minimumSizeHint)。
分裂器
QSplitter类提供了一个分裂器部件,包含在它里面的部件,默认是可以随着分裂器的大小变化而进行相应大小变化的。
设置伙伴
为了方便定位,QLabel提供了一个有用的机制,那就是提供了助记符来设置键盘焦点到对应的部件上,而这个部件就叫做这个QLabel的伙伴(buddy)。
应用程序主窗口
在Qt中提供了以QMainWindow类为核心的主窗口框架,它包含了众多相关的类
主窗口框架
QAction是一种命令动作,它可以同时放在菜单和工具栏中。一个QAction动作包含了一个图标,一个菜单显示文本,一个快捷键,一个状态栏显示文本,一个“What’s This?”显示文本和一个工具提示文本。这些都可以在构建QAction类对象时在构造函数中指定。
// 添加编辑菜单
QMenu *editMenu = ui->menuBar->addMenu(tr("编辑(&E)"));
// 添加打开菜单
QAction *action_Open = editMenu->addAction(
QIcon(“../images/open.png"),tr("打开文件(&O)"));
// 设置快捷键
action_Open->setShortcut(QKeySequence("Ctrl+O"));
// 在工具栏中添加动作
ui->mainToolBar->addAction(action_Open);
富文本处理
富文本(Rich Text)或者叫做富文本格式,简单来说就是在文档中可以使用多种格式,比如字体颜色、图片和表格等等。它是与纯文本(Plain Text)相对而言的,比如Windows上的记事本就是纯文本编辑器,而Word就是富文本编辑器。
富文本文档结构
因为QTextEdit类就是一个富文本编辑器,所以在构建QTextEdit类的对象时就已经构建了一个QTextDocument类对象和一个QTextCursor类对象,只需调用它们进行相应的操作即可。
一个空的文档包含了一个根框架(Root frame),这个根框架又包含了一个空的文本块(Block)。框架将一个文档分为多个部分,在根框架里可以再添加文本块、子框架和表格等。
QTextDocument *document = ui->textEdit->document(); //获取文档对象
QTextFrame *rootFrame = document->rootFrame(); // 获取根框架
QTextFrameFormat format; // 创建框架格式
format.setBorderBrush(Qt::red); // 边界颜色
format.setBorder(3); // 边界宽度
rootFrame->setFrameFormat(format); // 框架使用格式
文本块
一个文本块QTextBlock可以看做是一个段落,但是它不能使用回车换行,因为一个回车换行就表示创建一个新的文本块。
文本块的格式由QTextBlockFormat类来处理,它主要涉及对齐方式,文本块四周的边白,缩进等内容。
文本块中的文本内容的格式,比如字体大小、加粗、下划线等内容,则由QTextCharFormat类来设置。
表格、列表和图片
QTextTableFormat、QTextListFormat、QTextImageFormat
语法高亮
继承QSyntaxHighlighter类,重新实现highlightBlock()函数
HTML
…
拖放操作
打印文档
…