QT---设置textedit文本框中某个字符格式

   弄了好久吧,终于弄出来了。qt自带的帮助系统还真是挺好的,网上查了这么久资料,也没有找到具体的或者模糊的解决方法。只是说用html或者用QTextFormat及各种派生的类来改变文本框中字符格式,nnd,哥哥也知道可以用这个来实现。具体就没有了。废话少说,记录下来,以后用得着。这里用的是format。具体功能就是修改光标所在行的第pos个字符的格式,这里的格式是给字符加个下划线。其他格式,比如字符颜色、背景颜色也是如此,改下format就好了。

void Widget::setCharColor(unsigned int pos)
{
if(pos <= 0)return ;
QTextCursor cursor = ui->view1->textCursor();
cursor.movePosition( QTextCursor::StartOfLine );//行首
    cursor.movePosition( QTextCursor::Right, QTextCursor::MoveAnchor, pos-1);//向右移动到Pos
    cursor.movePosition( QTextCursor::NextCharacter, QTextCursor::KeepAnchor );
    ui->view1->setTextCursor( cursor );  // added
    QTextCharFormat defcharfmt = ui->view1->currentCharFormat();
    QTextCharFormat newcharfmt = defcharfmt;
    newcharfmt.setFontUnderline( true );
    newcharfmt.setUnderlineColor( QColor( Qt::red ) );
    newcharfmt.setUnderlineStyle( QTextCharFormat::SingleUnderline );
    ui->view1->setCurrentCharFormat( newcharfmt );

    cursor.movePosition( QTextCursor::PreviousCharacter );//加上这句是为了去除光标selected
    ui->view1->setTextCursor( cursor ); // added
//    ui->view1->setCurrentCharFormat( defcharfmt );
    ui->view1->setFocus();
}

常用格式:
【newcharfmt.setBackground(QColor("#EEEE00"));】
【newcharfmt.setFontPointSize(fontSize);】
【newcharfmt.setFontWeight(QFont::Bold);】
【highlightedFormat.setBackground(Qt::yellow);】
【newcharfmt.setForeground(Qt::red);】
注意:【上面的操作会促发textchanged槽函数,所以用到槽函数的时候注意下,加个标志判断下就好了】
说明:【curso.movePositon,,,//加上这句....ed】
不加上时效果如下:

加上时效果如下:

附:


版权声明:本文为博主[原创]文章,未经博主允许可以转载,注明博客出处:[http://blog.csdn.net/FreeApe]

时间: 2024-08-01 10:47:00

QT---设置textedit文本框中某个字符格式的相关文章

spinner 设置文本框中的字体颜色

onItemSelected(AdapterView parent, View v, int position, long id) { TextView v1 = (TextView)v; v1.setTextColor(Color.WHITE); //可以随意设置自己要的颜色值 } 本文转自:http://bbs.csdn.net/topics/350049938 spinner 设置文本框中的字体颜色

获取textarea文本框所选字符光标位置索引,以及选中的文本值;textarea高度自适应,随着内容增加高度增加;获取输入框中的光标位置

获取textarea文本框所选字符光标位置索引,以及选中的文本值 $.fn.selection = function () { var s, e, range, stored_range; if (this[0].selectionStart == undefined) { var selection = document.selection; if (this[0].tagName.toLowerCase() != "textarea") { var val = this.val()

textbox 文本框限制输入字符个数问题

1.一般情况下我们会想到的是使用它的MaxLength就可以达到目的 2.如果我们需要一个多行的文本框我们就会设置一下文本框的textmode="multiline",这时候我们会发现maxlength不再起作用了,在某个项目中我也遇到了这样的问题当时我是使用js做的处理 ? 1 2 3 function textCouter (field,maxlimit){  if(field.value.length >maxlimit)    field.value=field.valu

设置input文本框只读效果

设置input文本框只读效果:在实际应用中可能需要将input文本框设置为只读状态,代码实际非常简单,只要添加一个属性即可.代码如下: <input type="text" value="蚂蚁部落" readonly/> 使用readonly属性即可将文本框设置为只读状态,具体可以参阅<input>标签的readonly属性一章节. 原文地址:http://www.51texiao.cn/HTML5jiaocheng/2015/0521/21

css设置input文本框样式代码实例

css设置input文本框样式代码实例:使用css设置input元素的样式是最为常用的操作之一,当然也是最为基础的操作,可能对于刚刚接触css的朋友还不够熟悉,下面就通过一段简单的代码历史演示一下如何设置文本框的样式,当然这个演示可能并不是特别的美观,这里的目的也只是起到一个演示作用,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="

jsp利用cookie记住用户名,下次登录时显示在文本框中(仅仅一个Cookie就整了将近三个小时,⊙﹏⊙b汗)

<%@page import="java.net.URLDecoder"%> <%@page import="sun.security.util.Length"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html

怎么去掉WIN7窗口文本框中淡绿色的底色

重装系统后突然发现,浏览器中URL位置,word文本框中到处都充满这种淡绿色的东西,突然就好怀念白色的底色.就想把他改过来.原来是这样的: 下面是亲测有用的教程. 1 . 回到桌面,单击右键选择个性化! 2 . 进入如下页面,选择高级外观设置: 3.进行如下设置,设置完后单击确定,就完成完成了更改,所有的文本底色都改为白色的啦! 4 .最后是如下的效果,都改成功啦

【MFC设置静态文本框背景为透明】

视图类中加入OnCtlColor()函数: IDC_STATIC1为静态文本框ID HBRUSH CAngleView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); if((pWnd->GetDlgCtrlID() == IDC_STATIC1)) { pDC->SetTextColor(RGB(255,255,255))

QTP文本框中的弹窗问题

1.出发城市.到达城市.出发日期用同一类弹窗控件 2.导致录制出发城市.到达城市的识别属性都只有html tag,且录制结果都是NOBR,无法区分开来,结果回放不通过. 3.在对象识别设置中将page的强制识别属性加了innertext(其它属性应该也可以,只要是唯一的就行) 4.更改后录制可见三个控制是分开放在page page_2 page_3下面了(开始全部是在page的) 5.这样更改后回放发现还是出错,发现是输入框要先点击才能激活对应的弹出窗口,但录制是先弹窗再到输入框,手工将两者顺序