`
daisy_xu
  • 浏览: 5173 次
社区版块
存档分类
最新评论

QT学习笔记(二)

qt 
阅读更多
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学习笔记之二:程序框架

    现代OpenGL+Qt学习笔记之二:程序框架http://blog.csdn.net/chaojiwudixiaofeixia/article/details/77917697源码。

    qt 学习笔记 qt学习笔记

    ### Qt学习笔记知识点详解 #### 一、从Hello Qt开始 **知识点1:Qt程序的基本结构** - **头文件引入**: - 第1行和第2行代码中,`#include &lt;QApplication&gt;` 和 `#include &lt;QLabel&gt;` 是引入Qt中的两个类:`...

    Linux 嵌入式QT学习笔记

    ### Linux 嵌入式QT学习笔记 #### 一、信号与槽机制 信号与槽是QT框架中非常核心的概念之一,它为图形用户界面(GUI)应用程序提供了一种灵活而强大的事件处理机制。 ##### 1. 信号与槽的基本概念 - **信号(Signal...

    QT学习笔记_经验篇

    ### QT学习笔记_经验篇 #### 一、初识QT及环境配置 ##### 环境检查与安装 - **检查RedHat自带QT库** - **路径**: `/usr/lib/qt-3.1` - **操作**: 查看`qt3-1`目录下是否有13个文件,如果没有,需通过以下步骤...

    qt.rar_QT 学习网_Qt 学习笔记_qt 项目体会_qt使用心得

    在“qt.rar”这个压缩包中,包含的是关于QT学习的资源,特别是个人的学习笔记和项目体会,对于初学者来说是宝贵的参考资料。以下将详细讲解QT学习中的一些关键知识点: 1. **Qt基础知识**:Qt的核心是信号与槽机制...

    QT学习笔记

    15. 文件操作:QT提供了广泛的API来处理文件的读写操作,包括二进制文件和文本文件。开发者可以方便地实现数据的保存和加载功能。 16. 容器和数据共享:QT使用STL兼容的容器类来管理数据,并且支持隐式数据共享,...

    QT学习笔记_经验篇.doc

    这篇QT学习笔记主要涉及了在Linux环境下使用QT进行C++编程的基础步骤和常见问题的解决。 首先,笔记介绍了如何检查系统是否已经安装了QT库。在RedHat系统中,可以通过查看/usr/lib/qt-3.1目录是否存在13个文件来...

    qt经典学习笔记

    以下将基于这个标题和描述,以及可能包含在文档"qt经典学习笔记1.doc"中的内容,来阐述QT学习的一些关键知识点。 1. **QT基础概念**:QT的核心是其对象模型,所有的类都是继承自QObject,通过信号与槽机制实现对象...

    Qt学习笔记_QT_

    **Qt学习笔记** Qt是一个强大的跨平台应用程序开发框架,由The Qt Company维护,广泛用于创建桌面、移动和嵌入式系统的用户界面。本笔记将深入介绍Qt的核心概念、关键组件和常见应用场景,帮助初学者快速掌握Qt编程...

    QT学习笔记汇总.zip

    QT是Qt的缩写,它是一个跨...在QT学习笔记中,可能涵盖了以上所有或部分知识点,包括实例代码、问题解析、最佳实践等内容。通过对这些笔记的深入学习,开发者可以系统地掌握QT开发,从而高效地构建跨平台的应用程序。

    Qt学习笔记--图形视图框架

    Qt学习笔记--图形视图框架很好的,步骤清楚,手把手的教你使用Qt绘制图形视图

    QT学习笔记,总结了在学习过程中遇到的问题

    QT学习笔记,总结了在学习过程中遇到的问题

    Qt学习笔记(超详细带源码).pdf

    本篇学习笔记详细介绍了Qt的学习过程,包含了配置环境、基础概念、创建项目、常用API等方面的知识点。 ### Qt简介 - **跨平台图形界面引擎**:Qt支持多种操作系统平台,如Windows、Linux、MacOS等。 - **历史**:Qt...

    Qt学习笔记_QT_源码.zip

    这个"Qt学习笔记_QT_源码.zip"压缩包文件很可能是为学习Qt编程提供的一系列资料,包括笔记和源码示例。 首先,让我们深入理解Qt的核心概念: 1. **信号与槽机制**:这是Qt中的核心特性,它是一种异步事件处理方式...

    Qt个人学习笔记整理

    ### Qt个人学习笔记整理:对话框的深度解析与实践 #### 一、Qt自定义对话框:QMessageBox的深入理解 在Qt框架中,`QMessageBox`类扮演着极其重要的角色,它为开发者提供了一种简便的方式来创建各种对话框,如消息...

    QT学习笔记.pdf

    ### QT学习笔记知识点详解 #### 一、布局管理器 在QT中,布局管理器是一种非常重要的机制,用于管理窗口中的各个控件的位置和大小。布局管理器能够自动调整控件的位置和大小,以适应窗口的变化,使得界面设计更加...

    QT学习笔记.docx

    ### QT学习笔记知识点详解 #### 一、简介 本文档主要涵盖了个人在学习QT过程中的基础知识总结和笔记,包括但不限于信号槽机制、事件处理机制、菜单栏设计等内容。虽然覆盖的知识点较为基础,但旨在通过浅显易懂的...

    QT 4 学习笔记 QT入门推荐教程 CHM

    本人整理编译的良葛格QT4学习笔记,非常适合QT学习,推荐下载。

Global site tag (gtag.js) - Google Analytics