精华内容
下载资源
问答
  • 最近做一个控制台输出的程序,中间定义了不同的输出登记,比如绿色为运行等级,黄色为警告等级,红色为严重错误等级,需要QTextEdit对传来的不同等级的文字进行不同的处理,效果如下: void MainWindow::...

    最近做一个控制台输出的程序,中间定义了不同的输出登记,比如绿色为运行等级,黄色为警告等级,红色为严重错误等级,需要QTextEdit对传来的不同等级的文字进行不同的处理,效果如下:

    void MainWindow::OutPutMsgToConsle(ConSleLevel level,const QString &strText)
    {

    //日志等级大于配置文件允许的最高等级,就返回
        if (level > LocalConfig::GetInstance().GetCfgConsleLevel())
        {
            return;
        }

        m_Consle->append(strText);

        //选中改行文字
        QTextCursor cursor = m_Consle->textCursor();
        cursor.setPosition(cursor.position(),QTextCursor::MoveAnchor);
        cursor.setPosition(cursor.position() + strText.length(),QTextCursor::KeepAnchor);
        cursor.select(QTextCursor::WordUnderCursor);
        QTextCharFormat fmt;

       //根据不同等级绘制不同颜色

       QPainter p(this);
        switch (level)
        {
        case ERROR_INFO:
            fmt.setForeground(RGBRED);
            break;
        case WARMING_INFO:
            fmt.setForeground(RGBYELLOW);
            break;
        case RUNNING_INFO:
            fmt.setForeground(RGBGREEN);
            break;
        case DEBUG_INFO:
            fmt.setForeground(Qt::black);
            break;
        default:
            break;
        }
        cursor.mergeCharFormat(fmt);  
        cursor.clearSelection(); //撤销选中
        cursor.movePosition(QTextCursor::EndOfLine);  //cursor和anchor均移至末尾
    }

    展开全文
  • 但是发布软件之后,不经过QT打开编好的软件时,这些信息就看不到了,有什么办法让它们显示在软件界面的QTextEdit中去吗,像是这样子: [img=https://img-bbs.csdn.net/upload/201706/21/1498037109_150041.png][/...
  • QtCreator 富文本 ... 1. Qt对富文本的处理 1.1 操作方式 编辑操作:使用基于光标的接口函数,模拟用户的编辑操作,且不...只读操作:使用了只读的分层次接口函数,有利于文档的检索和输出;文档的框架基于QTextDo...

    QtCreator 富文本

    详细介绍网址:https://www.cnblogs.com/findumars/p/5176228.html

    1. Qt对富文本的处理

    1.1 操作方式

    编辑操作:使用基于光标的接口函数,模拟用户的编辑操作,且不丢失底层文档框架;文档的光标基于QTextCursor类

    只读操作:使用了只读的分层次接口函数,有利于文档的检索和输出;文档的框架基于QTextDocument

    1.2 富文本文档的结构

    结构元素:框架(QTextFrame),文本块(QTextBlock),表格(QTextTable),列表(QTextList)

    对应格式:框架格式(QTextFrameFormat),文本块格式(QTextBlockFormat),表格格式(QTextTableFormat),列表格式(QTextListFrame)

    格式是在编辑文档时与QTextCursor配合使用

    1.3 QTextEdit是一个富文本编辑器,在构建QTextEdit对象时就已经构建了一个QTextDocument对象和一个QTextCursor对象

    空文档:包含根框架(rootFrame),文本块(Block)

        QTextDocument *textDoc=document();
        QTextFrame *textFrame=textDoc->rootFrame();
        QTextFrameFormat frameFormat;
        frameFormat.setBorderBrush(Qt::red);
        frameFormat.setBorder(5);
        textFrame->setFrameFormat(frameFormat);
    
        QTextFrameFormat frameFormat2;
        frameFormat2.setBackground(Qt::lightGray);	//设置背景色
        frameFormat2.setMargin(10);		//设置边距
        frameFormat2.setPadding(5);		//设置填充
        frameFormat2.setBorder(2);
        frameFormat2.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted);	//设置边框样式
        QTextCursor cursor = textCursor();	//获取光标
        cursor.insertFrame(frameFormat2);		//在光标处插入框架

    1.4 文本块(QTextBlock)

    1.4.1遍历文档框架

    1.4.1.1 添加槽函数(在主界面头文件中添加)

    private slots:

    void showTextFrame(); //遍历文档框架

    1.4.1.2 在工具栏上添加Action

             QAction * act = new QAction(QString("框架"),this);

        connect(act,SIGNAL(triggered()),this,SLOT(showTextFrame()));
        ui->mainToolBar->addAction(act);

    1.4.1.3 添加槽函数的实现代码

    void MainWindow::showTextFrame(){
        QTextDocument * doc = ui->textEdit->document();
        QTextFrame *frame = doc->rootFrame();
        QTextFrame::iterator it;                            //建立QTextFrame类的迭代器
        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();
        }
    }
    

    1.4.2 遍历文本块

    1.4.2.1 添加槽函数(在主界面头文件中添加)

    void showTextBlock();   //遍历所有文本块
    

    1.4.2.2 在工具栏上添加Action

        QAction * act_textBlock = new QAction(QString("文本块"),this);
        connect(act_textBlock,SIGNAL(triggered()),this,SLOT(showTextBlock()));
        ui->mainToolBar->addAction(act_textBlock);
    

    1.4.2.3 添加槽函数的实现代码

    void MainWindow::showTextBlock(){
        QTextDocument* doc = ui->textEdit->document();
        QTextBlock block = doc->firstBlock();   //获取文档的第一个文本块
        for(int i = 0; i < doc->blockCount();i++) {
            qDebug() << QString("文本块%1,文本块首行行号为:%2,长度为:%3,内容为:")
                        .arg(i).arg(block.firstLineNumber()).arg(block.length())
                     << block.text();
            block = block.next();
        }
    }

    1.4.3 设置字体格式

    1.4.3.1 添加槽函数(在主界面头文件中添加)

    void setTextFont(bool checked); //设置字体格式
    

    1.4.3.2 在工具栏上添加Action

        //设置字体
        QAction * act_font = new QAction(QString("字体"),this);
        act_font->setCheckable(true);
        connect(act_font,SIGNAL(toggled(bool)),this,SLOT(setTextFont(bool)));
        ui->mainToolBar->addAction(act_font);
    

    1.4.3.3 添加槽函数的实现代码

    void MainWindow::setTextFont(bool checked){
        if (checked) {
            QTextCursor cursor = ui->textEdit->textCursor();
            //插入文本块
            QTextBlockFormat blockFormat;
            blockFormat.setAlignment(Qt::AlignCenter);
            cursor.insertBlock(blockFormat);
    
            //字符格式,字符颜色
            QTextCharFormat charFormat;
            charFormat.setBackground(Qt::lightGray);
            charFormat.setForeground(Qt::blue);
    
            //宋体,12号,加粗,倾斜
            charFormat.setFont(QFont(QString("宋体"),12,QFont::Bold,true));
            charFormat.setFontUnderline(true);
            cursor.setCharFormat(charFormat);
            cursor.insertText(QString("测试字体"));
        }
    }
    

    1.4.4 插入表格,列表,图片

    1.4.4.1 添加槽函数(在主界面头文件中添加)

        void insertTable();     //插入表格
        void insertList();      //插入列表
        void insertImage();     //插入图片
    

    1.4.4.2 在工具栏上添加Action

        //插入表格
        QAction * act_insertTable = new QAction(QString("插入表格"),this);
        connect(act_insertTable,SIGNAL(triggered()),this,SLOT(insertTable()));
        ui->mainToolBar->addAction(act_insertTable);
        //插入列表
        QAction * act_insertList = new QAction(QString("插入列表"),this);
        connect(act_insertList,SIGNAL(triggered()),this,SLOT(insertList()));
        ui->mainToolBar->addAction(act_insertList);
        //插入图片
        QAction * act_insertImage = new QAction(QString("插入图片"),this);
        connect(act_insertImage,SIGNAL(triggered()),this,SLOT(insertImage()));
        ui->mainToolBar->addAction(act_insertImage);
    

    1.4.4.3 添加槽函数的实现代码

    void MainWindow::insertTable(){
        QTextCursor cursor = ui->textEdit->textCursor();
        QTextTableFormat tableFormat;
        tableFormat.setCellPadding(10);
        tableFormat.setCellSpacing(2);
        cursor.insertTable(2,2,tableFormat);
    }
    
    void MainWindow::insertList(){
        QTextCursor cursor = ui->textEdit->textCursor();
        QTextListFormat listFormat;
        listFormat.setStyle(QTextListFormat::ListDecimal);
        cursor.insertList(listFormat);
    }
    
    void MainWindow::insertImage(){
        QTextImageFormat imageFormat;
        imageFormat.setName(":/image/2.jpg");
        ui->textEdit->textCursor().insertImage(imageFormat);
    }
    

    1.4.5 查找

    1.4.5.1 前置声明QLineEdit,在界面头文件中前置声明

    class QLineEdit;

    1.4.5.2 添加私有对象,前置声明就是为了这里使用的

        QLineEdit *lineEdit;
    

    1.4.5.3 添加私有槽函数

        void textFind();        //文本查找
        void findNext();        //查找下一个

    1.4.5.4 添加action

        //查找
        QAction *act_find = new QAction(QString("查找"),this);
        connect(act_find,SIGNAL(triggered()),this,SLOT(textFind()));
        ui->mainToolBar->addAction(act_find);
    

    1.4.5.5 实现槽函数

    void MainWindow::textFind() //查找文本{
        QDialog *dlg = new QDialog(this);       //创建查找对话框
        lineEdit = new QLineEdit(dlg);          //创建字符串输入框
        QPushButton* btFindNext = new QPushButton(this);    //查找按钮
        btFindNext->setText(QString("查找下一个"));
    
        connect(btFindNext,SIGNAL(clicked()),this,SLOT(findNext())); //关联查找信号和槽
        QVBoxLayout* layout = new QVBoxLayout;      //垂直布局
        layout->addWidget(lineEdit);                //将控件添加到主界面
        layout->addWidget(btFindNext);
        dlg->setLayout(layout);
        dlg->show();
    
    }
    
    void MainWindow::findNext(){
        QString string = lineEdit->text();
        //查找字符串,查找标志:QTextDocument::FindBackward:向前查找,
        //FindWholeWords:整个文档查找,FindCaseSensitively:忽略大小写查找
        bool isFind = ui->textEdit->find(string,QTextDocument::FindWholeWords);
        if (isFind) {
            qDebug() << QString("行号:%1,列号:%2").arg(ui->textEdit->textCursor().blockNumber())
                        .arg(ui->textEdit->textCursor().columnNumber());
        }
    }
    
     

    1.4.6语法高亮与html

    1.4.6.1添加新的文件,选择C++ 类,类名:mySyntaxHighlighter,基类:QSyntaxHighlighter,继承自:QObject

    1.4.6.2 修改mysyntaxhighlighter.h头文件

    将QTextDocument类对象指针作为其父部件指针,这样可以自动调用highlightBlock()函数,可以时的检测文本

        //将QTextDocument作为父窗口这样就可以自动调用highlightBlock()函数
        explicit mySyntaxHighlighter(QTextDocument *parent = 0);

     重新实现highlightBlock()函数以便将,字符串的格式应用到特定的字符串上面

    protected :
        void highlightBlock(const QString &text);   //必须重新实现该函数

    1.4.6.3  修改mysyntaxhighlighter.cpp文件

    mySyntaxHighlighter::mySyntaxHighlighter(QTextDocument *parent) :
        QSyntaxHighlighter(parent){
    }
    
     
    void mySyntaxHighlighter::highlightBlock(const QString &text){
        QTextCharFormat charFormat;         //设置匹配的字符格式
        charFormat.setFontWeight(QFont::Bold);
        charFormat.setForeground(Qt::green);
        QString pattern = "\\bchar\\b";     //要匹配的字符,这里是char单词
        QRegExp expression(pattern);        //创建正则表达式
        int index = text.indexOf(expression);   //默认从0开始匹配字符串
        //如果匹配成功,返回值为字符串的起始位置,它大于或等于0
        while(index >= 0 ) {
            int length = expression.matchedLength();    //要匹配字符串的长度
            setFormat(index,length,charFormat);         //对要匹配的字符串设置格式
            index = text.indexOf(expression,index + length); //继续匹配
        }
    }
    
     

     

    1.4.6.4  修该主界面头文件

        class mySyntaxHighlighter;
    

    添加私有变量

        mySyntaxHighlighter *highlighter;

    1.4.6.5 修该主界面的cpp文件

    在构造函数中添加

        highlighter = new mySyntaxHighlighter(ui->textEdit->document());
    

    1.4.7 QTextEdit的使用

    1.4.7.1 建立一个QTextEdit

        QTextDocument *m_doc = new QTextDocument("文本框中的文本");//创建一个装文本的容器
    	QTextEdit te;//定义文本框
    	te.setDocument(m_doc);//为文本框绑定内容
    

    1.4.7.2 向QTextEdit中写入数据

        QString gyyq = rec.value("gy").toString();
        te.document()->setPlainText(gyyq);
    

    1.4.7.3 从QTextEdit中读取数据

        QString gyyq = te.document()->toPlainText();
    展开全文
  • 简易的QT输出调试器

    千次阅读 2019-10-29 23:28:11
    因为在VS+QT的环境下,cout以及QDebug都不好用了,所以自己定义一个QT的widget来显示调试信息。先放上源码: #pragma once #ifndef _DEBUGWIDGET_H__ #define _DEBUGWIDGET_H__ #include <QWidget> #include...

        因为在VS+QT的环境下,cout以及QDebug都不好用了,所以自己定义一个QT的widget来显示调试信息。先放上源码:

    #pragma once
    #ifndef _DEBUGWIDGET_H__
    #define _DEBUGWIDGET_H__
    #include <QWidget>
    #include <qtextedit.h>
    #include <qlayout.h>
    class DebugWidget : public QWidget {
    	Q_OBJECT
    
    public:
    	DebugWidget(QWidget * parent = Q_NULLPTR);
    	~DebugWidget();
    	void addContents(QString);
    private:
    	QTextEdit *ShowDebugArea;
    	QHBoxLayout *qlayout;
    };
    
    
    #endif
    
    

        一个简单的布局,一个QTextEdit就好了。下面看.cpp文件:

    #include "debugwidget.hpp"
    #include <iostream>
    #include <vector>
    #include <string>
    #include <ostream>
    #include <fstream>
    
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::ifstream;
    using std::ofstream;
    using std::streambuf;
    using std::string;
    using std::vector;
    
    DebugWidget::DebugWidget(QWidget * parent) : QWidget(parent) {
    	
    	setWindowFlags(Qt::WindowStaysOnTopHint);
    	resize(1100,800);
    	qlayout = new QHBoxLayout(this);
    	ShowDebugArea = new QTextEdit(this);
    	ShowDebugArea->setFontPointSize(20);
    	qlayout->setAlignment(Qt::AlignCenter);
    	qlayout->addWidget(ShowDebugArea);
    	setAttribute(Qt::WA_DeleteOnClose, true);
    	show();
    }
    
    DebugWidget::~DebugWidget() {
    	
    }
    
    void DebugWidget::addContents(QString s1)
    {
    	ShowDebugArea->append(s1);
    }
    
    

        首先我们把调试器设置在最顶层,setWindowFlags(Qt::WindowStaysOnTopHint);  这样就不会被其他部件遮盖住,显示在最顶层也是为了查看内容方便。

        然后就设置大小以及设置布局,最后  setAttribute(Qt::WA_DeleteOnClose, true); 用来设置窗口关闭以后自动删除该类。

        该类的使用方法:

    debugwidget.hpp 
    debugwidget.cpp 
    这两个文件是用来调试的。 
    调试方法: 
    使用时加上 #include "debugwidget.hpp" 头文件。 

    然后 DebugWidget *dw = new DebugWidget; 
    想显示什么调试信息,就使用 dw->addContents(QString); 

     

    展开全文
  • 在做项目的时候,用QTextEdit显示输出,期间想输出一个地址,类似:0x7ff20ffa8600 这种,但是QTextEdit只能输出字符串, ,我尝试了几次却没办法把地址转成字符串。 请问有什么方法可以输出地址么? 比如不用...
  • 1. Qt对富文本的处理 1.1 操作方式 编辑操作:使用基于光标的接口函数,模拟用户的编辑操作,且不丢失底层文档框架;文档的光标基于QTextCursor类 只读操作:使用了只读的分层次接口函数,有利于文档的检索和输出...

    转发自:https://blog.csdn.net/psujtfc/article/details/37900757     侵删

    1. Qt对富文本的处理

    1.1 操作方式

    编辑操作:使用基于光标的接口函数,模拟用户的编辑操作,且不丢失底层文档框架;文档的光标基于QTextCursor类

    只读操作:使用了只读的分层次接口函数,有利于文档的检索和输出;文档的框架基于QTextDocument

    1.2 富文本文档的结构

    结构元素:框架(QTextFrame),文本块(QTextBlock),表格(QTextTable),列表(QTextList)

    对应格式:框架格式(QTextFrameFormat),文本块格式(QTextBlockFormat),表格格式(QTextTableFormat),列表格式(QTextListFrame)

    格式是在编辑文档时与QTextCursor配合使用

    1.3QTextEdit是一个富文本编辑器,在构建QTextEdit对象时就已经构建了一个QTextDocument对象和一个QTextCursor对象

    空文档:包含根框架(rootFrame),文本块(Block)

        QTextDocument *doc = ui->textEdit->document(); //获取文档对象
        QTextFrame *rootFrame = doc->rootFrame();   //获取根框架
        QTextFrameFormat frameFormat;           //创建框架格式
        frameFormat.setBorderBrush(Qt::red);    //设置边界颜色
        frameFormat.setBorder(5);       //设置边界宽度
        rootFrame->setFrameFormat(frameFormat); //给框架使用格式
    
    
        QTextFrameFormat frameFormat2;    
        frameFormat2.setBackground(Qt::lightGray);    //设置背景色
        frameFormat2.setMargin(10);        //设置边距
        frameFormat2.setPadding(5);        //设置填充
        frameFormat2.setBorder(2);
        frameFormat2.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted);    //设置边框样式
        QTextCursor cursor = ui->textEdit->textCursor();    //获取光标
        cursor.insertFrame(frameFormat2);        //在光标处插入框架


    1.4 文本块(QTextBlock)
    1.4.1遍历文档框架

    1.4.1.1 添加槽函数(在主界面头文件中添加)

    private slots:
        void showTextFrame();   //遍历文档框架


    1.4.1.2 在工具栏上添加Action
       

    QAction * act = new QAction(QString("框架"),this);
        connect(act,SIGNAL(triggered()),this,SLOT(showTextFrame()));
        ui->mainToolBar->addAction(act);


    1.4.1.3 添加槽函数的实现代码

    void MainWindow::showTextFrame()
    {
        QTextDocument * doc = ui->textEdit->document();
        QTextFrame *frame = doc->rootFrame();
        QTextFrame::iterator it;                            //建立QTextFrame类的迭代器
        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();
        }
    }


    1.4.2 遍历文本块

    1.4.2.1 添加槽函数(在主界面头文件中添加)

    void showTextBlock();   //遍历所有文本块


    1.4.2.2 在工具栏上添加Action

       

    QAction * act_textBlock = new QAction(QString("文本块"),this);
        connect(act_textBlock,SIGNAL(triggered()),this,SLOT(showTextBlock()));
        ui->mainToolBar->addAction(act_textBlock);


    1.4.2.3 添加槽函数的实现代码

    void MainWindow::showTextBlock()
    {
        QTextDocument* doc = ui->textEdit->document();
        QTextBlock block = doc->firstBlock();   //获取文档的第一个文本块
        for(int i = 0; i < doc->blockCount();i++) {
            qDebug() << QString("文本块%1,文本块首行行号为:%2,长度为:%3,内容为:")
                        .arg(i).arg(block.firstLineNumber()).arg(block.length())
                     << block.text();
            block = block.next();
        }
    }


    1.4.3 设置字体格式
    1.4.3.1 添加槽函数(在主界面头文件中添加)

    void setTextFont(bool checked); //设置字体格式


    1.4.3.2 在工具栏上添加Action

       

     //设置字体
        QAction * act_font = new QAction(QString("字体"),this);
        act_font->setCheckable(true);
        connect(act_font,SIGNAL(toggled(bool)),this,SLOT(setTextFont(bool)));
        ui->mainToolBar->addAction(act_font);

    1.4.3.3 添加槽函数的实现代码

    void MainWindow::setTextFont(bool checked)
    {
        if (checked) {
            QTextCursor cursor = ui->textEdit->textCursor();
            //插入文本块
            QTextBlockFormat blockFormat;
            blockFormat.setAlignment(Qt::AlignCenter);
            cursor.insertBlock(blockFormat);
            //字符格式,字符颜色
            QTextCharFormat charFormat;
            charFormat.setBackground(Qt::lightGray);
            charFormat.setForeground(Qt::blue);
            //宋体,12号,加粗,倾斜
            charFormat.setFont(QFont(QString("宋体"),12,QFont::Bold,true));
            charFormat.setFontUnderline(true);
            cursor.setCharFormat(charFormat);
            cursor.insertText(QString("测试字体"));
        }
    }

    1.4.4 插入表格,列表,图片
    1.4.4.1 添加槽函数(在主界面头文件中添加)

       

     void insertTable();     //插入表格
        void insertList();      //插入列表
        void insertImage();     //插入图片


    1.4.4.2 在工具栏上添加Action

       

        //插入表格
        QAction * act_insertTable = new QAction(QString("插入表格"),this);
        connect(act_insertTable,SIGNAL(triggered()),this,SLOT(insertTable()));
        ui->mainToolBar->addAction(act_insertTable);
        //插入列表
        QAction * act_insertList = new QAction(QString("插入列表"),this);
        connect(act_insertList,SIGNAL(triggered()),this,SLOT(insertList()));
        ui->mainToolBar->addAction(act_insertList);
        //插入图片
        QAction * act_insertImage = new QAction(QString("插入图片"),this);
        connect(act_insertImage,SIGNAL(triggered()),this,SLOT(insertImage()));
        ui->mainToolBar->addAction(act_insertImage);

    1.4.4.3 添加槽函数的实现代码

    void MainWindow::insertTable()
    {
        QTextCursor cursor = ui->textEdit->textCursor();
        QTextTableFormat tableFormat;
        tableFormat.setCellPadding(10);
        tableFormat.setCellSpacing(2);
        cursor.insertTable(2,2,tableFormat);
    }
    void MainWindow::insertList()
    {
        QTextCursor cursor = ui->textEdit->textCursor();
        QTextListFormat listFormat;
        listFormat.setStyle(QTextListFormat::ListDecimal);
        cursor.insertList(listFormat);
    }
    void MainWindow::insertImage()
    {
        QTextImageFormat imageFormat;
        imageFormat.setName(":/image/2.jpg");
        ui->textEdit->textCursor().insertImage(imageFormat);
    }

    1.4.5 查找

    1.4.5.1 前置声明QLineEdit,在界面头文件中前置声明

    class QLineEdit;


    1.4.5.2 添加私有对象,前置声明就是为了这里使用的
       

     QLineEdit *lineEdit;


    1.4.5.3 添加私有槽函数

     

       void textFind();        //文本查找
       void findNext();        //查找下一个


    1.4.5.4 添加action
       

    //查找
    QAction *act_find = new QAction(QString("查找"),this);
    connect(act_find,SIGNAL(triggered()),this,SLOT(textFind()));
    ui->mainToolBar->addAction(act_find);


    1.4.5.5 实现槽函数

    void MainWindow::textFind() //查找文本
    {
        QDialog *dlg = new QDialog(this);       //创建查找对话框
        lineEdit = new QLineEdit(dlg);          //创建字符串输入框
        QPushButton* btFindNext = new QPushButton(this);    //查找按钮
        btFindNext->setText(QString("查找下一个"));
        connect(btFindNext,SIGNAL(clicked()),this,SLOT(findNext())); //关联查找信号和槽
        QVBoxLayout* layout = new QVBoxLayout;      //垂直布局
        layout->addWidget(lineEdit);                //将控件添加到主界面
        layout->addWidget(btFindNext);
        dlg->setLayout(layout);
        dlg->show();
    }
    void MainWindow::findNext()
    {
        QString string = lineEdit->text();
        //查找字符串,查找标志:QTextDocument::FindBackward:向前查找,
        //FindWholeWords:整个文档查找,FindCaseSensitively:忽略大小写查找
        bool isFind = ui->textEdit->find(string,QTextDocument::FindWholeWords);
        if (isFind) {
            qDebug() << QString("行号:%1,列号:%2").arg(ui->textEdit->textCursor().blockNumber())
                        .arg(ui->textEdit->textCursor().columnNumber());
        }


    }
    1.4.6语法高亮与html
    1.4.6.1添加新的文件,选择C++ 类,类名:mySyntaxHighlighter,基类:QSyntaxHighlighter,继承自:QObject

    1.4.6.2 修改mysyntaxhighlighter.h头文件

    将QTextDocument类对象指针作为其父部件指针,这样可以自动调用highlightBlock()函数,可以时的检测文本

       

    //将QTextDocument作为父窗口这样就可以自动调用highlightBlock()函数
        explicit mySyntaxHighlighter(QTextDocument *parent = 0);


     重新实现highlightBlock()函数以便将,字符串的格式应用到特定的字符串上面

    protected :
        void highlightBlock(const QString &text);   //必须重新实现该函数


    1.4.6.3  修改mysyntaxhighlighter.cpp文件

    mySyntaxHighlighter::mySyntaxHighlighter(QTextDocument *parent) :
        QSyntaxHighlighter(parent)
    {
    }
    void mySyntaxHighlighter::highlightBlock(const QString &text)
    {
        QTextCharFormat charFormat;         //设置匹配的字符格式
        charFormat.setFontWeight(QFont::Bold);
        charFormat.setForeground(Qt::green);
        QString pattern = "\\bchar\\b";     //要匹配的字符,这里是char单词
        QRegExp expression(pattern);        //创建正则表达式
        int index = text.indexOf(expression);   //默认从0开始匹配字符串
        //如果匹配成功,返回值为字符串的起始位置,它大于或等于0
        while(index >= 0 ) {
            int length = expression.matchedLength();    //要匹配字符串的长度
            setFormat(index,length,charFormat);         //对要匹配的字符串设置格式
            index = text.indexOf(expression,index + length); //继续匹配
        }
    }


    1.4.6.4  修该主界面头文件

       

    class mySyntaxHighlighter;


    添加私有变量

       

    mySyntaxHighlighter *highlighter;


    1.4.6.5 修该主界面的cpp文件
    在构造函数中添加

    highlighter = new mySyntaxHighlighter(ui->textEdit->document());

    1.4.7 QTextEdit的使用

    1.4.7.1 建立一个QTextEdit

    QTextDocument *m_doc = new QTextDocument("文本框中的文本");//创建一个装文本的容器
    QTextEdit te;//定义文本框
    te.setDocument(m_doc);//为文本框绑定内容


        
    1.4.7.2 向QTextEdit中写入数据

       QString gyyq = rec.value("gy").toString();
        te.document()->setPlainText(gyyq);

     


    1.4.7.3 从QTextEdit中读取数据

    QString gyyq = te.document()->toPlainText();

    --------------------- 
    作者:psujtfc 
    来源:CSDN 
    原文:https://blog.csdn.net/psujtfc/article/details/37900757 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 简易的QT输出调试器2

    千次阅读 2019-10-30 18:43:05
    我们升级一下调试器,让它变成单例模式,所有调试都打印在一个窗口上: #pragma once #ifndef _DEBUGWIDGET_H__ #define _DEBUGWIDGET_H__ ...qtextedit.h> #include <qlayout.h> class DebugWidget : ...
  • # time.sleep(5) # time.sleep()是一个阻塞任务,不允许Qt事件循环运行,从而阻止信号正常工作和GUI更新,运行时会等5s后打印所有信息。 解决方案是使用QTimer和QEventLoop替换该GUI睡眠。 self.timer = ...
  • 程序的基本调用流程是,在一个业务处理线程中,通过调用QTextEdit::append()方法输出提示信息,从而引发程序崩溃。 程序运行时的错误提示如下: QObject::connect: Cannot queue arguments of type 'QTextCursor' ...
  • Linux下QT调用外部程序F,F运行的时间比较长,在运行过程中不断有输出,用scrollarea+label(或者什么textedit)来显示程序F的输出,用的是readAll(),程序运行过程中的输出可以看到,但是当F程序运行完毕的时候,只有最后...
  • QTextEdit实现富文本记事本

    千次阅读 2017-01-18 14:55:54
    Qt实现一个多功能记事本, 功能 :布局对齐,字体变换,颜色改变. 格式 :自动保存为rtf格式,支持txt格式,兼容MS Word打开. 涉及知识 :文件保存过滤器的使用,文件的输入输出流,光标的控制 可能会有一些小Bug 效果...
  • QTextEdit类在设置为只读模式时可实现这种功能。 函数 void QTextEdit::setReadOnly(bool ro) [slot] void QTextEdit::append(const QString & text) voidQTextEdit::setLineWrapMode(LineWrapMode mode) ...
  • 曾经为qt不能直接导出excel而困扰,后来经过深入了解,得知qt支持xml国际语言,html是xml的一种。html是做网页的,相信大家比较熟悉。所以使用html的生成表格。然后导出html格式文件。或者直接导出xls格式。excel是...
  • QT实现日志系统

    2019-12-11 17:21:30
    可以把简单输出信息显示到QTextEdit上面。 可以把详细输出信息保存到文件中(为了避免多次打开文件进行读写,我用了双缓冲和线程)。 主要文件1:SysMessage.h #ifndef SYSMESSAGE_H #define SYSMESSAGE_H ...
  • Qt QProcess应用

    千次阅读 2011-08-24 16:33:38
    本文通过QProcess,实现了在Qt中调用外部程序(控制台程序),并将输出重定向到了一个QTextEdit里。效果如下图所示: 运行界面如下:   //process.cpp #include #include "process.h" Process::P
  • QT中调用外部程序:QProcess的使用

    千次阅读 2010-08-01 11:58:00
    <br />本文转自:http://blog.csdn.net/WaderChan/archive/2009/05/19/4199913.aspx<br />  本文通过QProcess,实现了在Qt中调用外部程序(控制台程序),并将输出重定向到了一个QTextEdit里。...
  • 1 cmd窗口cd到moc.exe2 键入命令:如 moc [你的Qt安装目录]\qtbase\src\widgets\widgets\qtextedit.h -o [你想要输出的目录]\moc_qtextedit.cpp
  • QT串口工具(3)

    2015-08-19 08:16:24
     首先是QTextEdit *com_data_edit, 串口接收数据窗口,同时也可以在此编辑框里实现键盘输入转换成串口输出。在默认的情况下,QTextEdit的字符输入会直接在其窗口显示,而且会有鼠标右健菜单,鼠标中键的粘贴功能。...
  • qt获取输入中的中文

    千次阅读 2012-08-26 01:19:27
    这天需要获取在QTextEdit输入的中文, 于是采用事件过滤器,在textedit上面输入中文,再把event->type()输出,去查找对应的事件号,最后发现是QEvent::InputMethod,于是果断查了下QInputMethodEvent,发现它能够获得中文...
  • 可以通过PyQt5,将运行结果输出定向到QTextEdit来完成。 环境:python3.7,pychram CE 1.准备工作 Qt sip PyQt5 Qt 5可以在官网下载,选择免费的OpenSource系列,但速度较慢。推荐在清华镜像下载Qt-5.13.0,整个...
  • //输出接收到的QString } break; default: //qint64 nbytes = tcpSocket->bytesAvailable(); //textEditRead->append(buffer); break; } //缓存多余的数据 buffer = m_buffer.right(totalLen ...
  • import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QAction,QLabel,QLineEdit,QPushButton ...from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTextEdit, QTextBrowser, QHBoxLayo...
  • from PyQt5.QtWidgets import QWidget, QApplication, QGroupBox, QPushButton, QLabel, QHBoxLayout, QVBoxLayout, QGridLayout, QFormLayout, QLineEdit, QTextEdit from PyQt5.QtGui import QIcon class ...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

qtqtextedit输出