QT 第五章-5.2文本块
完整学习CODE:
1).h文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void showTextFrame();
void showTextBlock();
void setTextFont(bool checked);
};
#endif // MAINWINDOW_H
2).CPP文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTextCodec>
#include <QTextFrame>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
// QT 框架的实际应用
QTextDocument *document = ui->textEdit->document();//获取文档对象
QTextFrame *rootFrame = document->rootFrame();//获取根框架
QTextFrameFormat format;//创建框架格式
format.setBorderBrush(Qt::red);//边界颜色
format.setBorder(3);//边界宽度
rootFrame->setFrameFormat(format);//框架使用格式
//使用光标类对象,在根框架中再添加一个子框架
QTextFrameFormat frameFormat;
frameFormat.setBackground(Qt::lightGray);//设定背景颜色
frameFormat.setMargin(10);//设定边距
frameFormat.setPadding(5);//设定填衬
frameFormat.setBorder(2);
frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Groove);
QTextCursor cursor = ui->textEdit->textCursor();
cursor.insertFrame(frameFormat);
QAction *action_textFrame = new QAction(tr("框架"), this);
connect(action_textFrame, SIGNAL(triggered()), this, SLOT(showTextFrame()));
ui->mainToolBar->addAction(action_textFrame);//在工具栏新增动作
QAction *action_textBlock = new QAction(tr("文本块"), this);
connect(action_textBlock, SIGNAL(triggered()), this, SLOT(showTextBlock()));
ui->mainToolBar->addAction(action_textBlock);
QAction *action_font = new QAction(tr("字体"), this);
action_font -> setCheckable(true);
connect(action_font, SIGNAL(toggled(bool)), this, SLOT(setTextFont(bool)));
ui->mainToolBar->addAction(action_font);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showTextFrame()
{
QTextDocument *document = ui->textEdit->document();
QTextFrame *frame = document->rootFrame();
QTextFrame::iterator it;
for(it = frame->begin();!(it.atEnd()); ++it)
{
QTextFrame *childFrame = it.currentFrame();//获取当前框架的指针
QTextBlock childBlock = it.currentBlock();//获取当前文本块
if(childFrame)
{
qDebug()<<"frame";
}
else if(childBlock.isValid())
{
qDebug()<<"block:"<<childBlock.text();
}
}
}
void MainWindow::showTextBlock()
{
QTextDocument *document = ui->textEdit->document();
QTextBlock block = document -> firstBlock();
for(int i = 0; i<document->blockCount(); i++)
{
qDebug()<<tr("文本块%1,文本块首行行号为:%2, 长度为:%3, 内容为:").arg(i).arg(block.firstLineNumber()).arg(block.length())<<block.text();
block = block.next();
}
}
void MainWindow::setTextFont(bool checked)
{
QTextCursor cursor;
QTextCharFormat charFormat;
if(checked)
{
cursor = ui->textEdit->textCursor();
QTextBlockFormat blockFormat;
blockFormat.setAlignment(Qt::AlignCenter);
cursor.insertBlock(blockFormat);
charFormat.setBackground(Qt::lightGray);
charFormat.setForeground(Qt::blue);
//使用宋体,12号,加粗,倾斜
charFormat.setFont(QFont(tr("宋体"), 12, QFont::Bold, true));
charFormat.setFontUnderline(true);
cursor.setCharFormat(charFormat);
cursor.insertText(tr("测试字体"));
}
else
{
charFormat.setFont(QFont(tr("宋体"), 10, QFont::Black, true));
charFormat.setFontUnderline(false);
cursor.setCharFormat(charFormat);
cursor.insertText(tr("测试字体"));
}
}
分享到:
相关推荐
现代OpenGL+Qt学习笔记之二:程序框架http://blog.csdn.net/chaojiwudixiaofeixia/article/details/77917697源码。
### Qt学习笔记知识点详解 #### 一、从Hello Qt开始 **知识点1:Qt程序的基本结构** - **头文件引入**: - 第1行和第2行代码中,`#include <QApplication>` 和 `#include <QLabel>` 是引入Qt中的两个类:`...
### Linux 嵌入式QT学习笔记 #### 一、信号与槽机制 信号与槽是QT框架中非常核心的概念之一,它为图形用户界面(GUI)应用程序提供了一种灵活而强大的事件处理机制。 ##### 1. 信号与槽的基本概念 - **信号(Signal...
### QT学习笔记_经验篇 #### 一、初识QT及环境配置 ##### 环境检查与安装 - **检查RedHat自带QT库** - **路径**: `/usr/lib/qt-3.1` - **操作**: 查看`qt3-1`目录下是否有13个文件,如果没有,需通过以下步骤...
在“qt.rar”这个压缩包中,包含的是关于QT学习的资源,特别是个人的学习笔记和项目体会,对于初学者来说是宝贵的参考资料。以下将详细讲解QT学习中的一些关键知识点: 1. **Qt基础知识**:Qt的核心是信号与槽机制...
15. 文件操作:QT提供了广泛的API来处理文件的读写操作,包括二进制文件和文本文件。开发者可以方便地实现数据的保存和加载功能。 16. 容器和数据共享:QT使用STL兼容的容器类来管理数据,并且支持隐式数据共享,...
这篇QT学习笔记主要涉及了在Linux环境下使用QT进行C++编程的基础步骤和常见问题的解决。 首先,笔记介绍了如何检查系统是否已经安装了QT库。在RedHat系统中,可以通过查看/usr/lib/qt-3.1目录是否存在13个文件来...
以下将基于这个标题和描述,以及可能包含在文档"qt经典学习笔记1.doc"中的内容,来阐述QT学习的一些关键知识点。 1. **QT基础概念**:QT的核心是其对象模型,所有的类都是继承自QObject,通过信号与槽机制实现对象...
**Qt学习笔记** Qt是一个强大的跨平台应用程序开发框架,由The Qt Company维护,广泛用于创建桌面、移动和嵌入式系统的用户界面。本笔记将深入介绍Qt的核心概念、关键组件和常见应用场景,帮助初学者快速掌握Qt编程...
QT是Qt的缩写,它是一个跨...在QT学习笔记中,可能涵盖了以上所有或部分知识点,包括实例代码、问题解析、最佳实践等内容。通过对这些笔记的深入学习,开发者可以系统地掌握QT开发,从而高效地构建跨平台的应用程序。
Qt学习笔记--图形视图框架很好的,步骤清楚,手把手的教你使用Qt绘制图形视图
QT学习笔记,总结了在学习过程中遇到的问题
本篇学习笔记详细介绍了Qt的学习过程,包含了配置环境、基础概念、创建项目、常用API等方面的知识点。 ### Qt简介 - **跨平台图形界面引擎**:Qt支持多种操作系统平台,如Windows、Linux、MacOS等。 - **历史**:Qt...
这个"Qt学习笔记_QT_源码.zip"压缩包文件很可能是为学习Qt编程提供的一系列资料,包括笔记和源码示例。 首先,让我们深入理解Qt的核心概念: 1. **信号与槽机制**:这是Qt中的核心特性,它是一种异步事件处理方式...
### Qt个人学习笔记整理:对话框的深度解析与实践 #### 一、Qt自定义对话框:QMessageBox的深入理解 在Qt框架中,`QMessageBox`类扮演着极其重要的角色,它为开发者提供了一种简便的方式来创建各种对话框,如消息...
### QT学习笔记知识点详解 #### 一、布局管理器 在QT中,布局管理器是一种非常重要的机制,用于管理窗口中的各个控件的位置和大小。布局管理器能够自动调整控件的位置和大小,以适应窗口的变化,使得界面设计更加...
### QT学习笔记知识点详解 #### 一、简介 本文档主要涵盖了个人在学习QT过程中的基础知识总结和笔记,包括但不限于信号槽机制、事件处理机制、菜单栏设计等内容。虽然覆盖的知识点较为基础,但旨在通过浅显易懂的...
本人整理编译的良葛格QT4学习笔记,非常适合QT学习,推荐下载。