~~~~我的生活,我的点点滴滴!!

当然以下内容都可以通过设置样式来达到目的,但是下面不使用这样的方法

先来看张图,理解此图基本就能实现上面所要达到的目的了

Widget::Widget(QWidget *parent)

: QWidget(parent), ui(new Ui::Widget) {

ui->setupUi(this);

connect(ui->button, SIGNAL(clicked()), this, SLOT(setColor()));

QPalette p = palette();

p.setColor(QPalette::Text, QColor(0, 255, 0));

setPalette(p); // 注意这里, 修改了widget的调色板, 子窗口ui->lineEdit的颜色变化.

}

Widget::~Widget() {

delete ui;

}

void Widget::setColor() {

QPalette palette = ui->lineEdit->palette();

const QColor &color = QColorDialog::getColor(palette.color(QPalette::Background), this);

if (color.isValid()) {

palette.setColor(QPalette::Highlight, color);

ui->lineEdit->setPalette(palette);

}

}

palette.setColor(QPalette::Highlight, color);

此处:

QPalette::Highlight // 被选中后文字的背景色.

QPalette::HighlightText // 被选中后文字的前景色.

QPalette::Text // 文字的前景色

QPalette::Base // QTextEdit的背景色, 默认是白色的.

Role: Qt中会有一组数据, 当取得这些数据时, 使用同样的方法去获取, 为了指明是取得哪种数据, 所以就定义了Role这种概念, 来指明要获取的数据的类型, 例如在View中, 如有显示的文字, 图标, 真正有用的数据(可能没有显示出来, 而是在内部存储着), 取得这些数据都是用同一个方法data(), 通过指明数据的角色来获得.

所有Qt窗口部件都拥有一个QPalette, 并使用它绘制自己. 应用程序还有一个调色板, 通过QApplication::palette()来获得. 修改一个窗口部件的调色板, 只影响这个窗口部件以及子窗口部件(不包含子窗口, 如只是以他作为父对象来管理内存, 而不在他里面显示), 而修改应用程序的调色板, 会影响到该应用程序的所有窗口部件

void Widget::slot_updateFont()
{
    bool ok;
    QFont font = QFontDialog::getFont(&ok, m_curfont, this);
    if( ok )
    {
        m_curfont = font;
        setInsertTextFont(font);
        //ui->m_textwrite->setFont(m_curfont);
        //ui->m_spbfont->setValue(m_curfont.pointSize());
    }
}

void Widget::slot_updateColor()
{
   QColor color = QColorDialog::getColor(m_curcolor,this);

if( color.isValid() )
   {
       m_curcolor = color;
       QPalette palette = ui->m_textwrite->palette();
       palette.setColor(QPalette::Text, m_curcolor);
       ui->m_textwrite->setPalette(palette);
   }
}

void Widget::slot_updateFontSize(int value)
{
    m_curfontsize = value;
    m_curfont.setPointSize(m_curfontsize);
    ui->m_textwrite->setFont(m_curfont);
}

void Widget::displayData(const QString &str)
{
    QFont timeFont(QFont( "AR PL UKai CN,10,-1,5,50,0,0,0,0,0" ));
    QColor timeColor (0,0,255);
    QTime curTime = QTime::currentTime();

//设置时间颜色与字体
    setInsertTextFont(timeFont);
    setInsertTextColor(timeColor);
    ui->m_textdisplay->append(curTime.toString());

//设置发送内容
    setInsertTextFont(m_curfont);
    setInsertTextColor(m_curcolor);
    ui->m_textdisplay->append(str);
}

void Widget::setInsertTextFont(const QFont &font)
{
    QTextCharFormat fmt;//文本字符格式
    fmt.setFont(font);//字体
    QTextCursor cursor = ui->m_textdisplay->textCursor();//获取文本光标
    cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
    ui->m_textdisplay->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
}

void Widget::setInsertTextColor(const QColor &color)
{
    QTextCharFormat fmt;//文本字符格式
    fmt.setForeground(color);// 前景色(即字体色)设为color色
    QTextCursor cursor = ui->m_textdisplay->textCursor();//获取文本光标
    cursor.mergeCharFormat(fmt);//光标后的文字就用该格式显示
    ui->m_textdisplay->mergeCurrentCharFormat(fmt);//textEdit使用当前的字符格式
}

对于上面的代码,我为什么没有用QTextEdit里setTextColor这个函数接口了,是因为这个函数是针对当前选中的,从当前光标位置开始往后改变的

http://blog.csdn.net/ac_huang/article/details/23833127

QTextEdit中选中文本修改字体与颜色,全部文本修改字体与颜色(设置调色板的前景色、背景色、文字颜色以及基色)的更多相关文章

  1. iOS TabbarController 设置底部Toolbar图片和文字颜色选中样式

    提取公共方法: -(void)createChildVcWithVc:(UIViewController *)vc Title:(NSString *)title image:(NSString *) ...

  2. 修改static控件背景颜色和文字颜色

    当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息.如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄, ...

  3. Android中通过xml改变背景及文字颜色

    原创文章,转载请注明出处,谢谢! 本篇主要介绍Android开发中,通过XML资源文件来设置控件在不同状态下的背景及文字颜色.关于xml改变背景及文字颜色的原理,大家可以去看一下郭霖大神的源码分析文章 ...

  4. VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]

    在MFC中设置控件的背景色.字体.字体颜色.标题等属性主要是利用OnCtlColor函数来实现. 如: HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, ...

  5. select()事件默认选中文本框的全部内容,并改变其背景色和文字颜色

    1.select()事件默认选中文本框的全部内容 拿到input标签的节点,调用select()方法即可.但是我做的vue项目中调用了此方法有一个bug,单次点击会全选内容,双次点击的时候全选会闪一下 ...

  6. Android NumberPicker 修改分割线颜色和高度及字体颜色大小

    (1)重写NumberPicker已达到修改显示字体颜色大小 public class TextColorNumberPicker extends NumberPicker { public Text ...

  7. iOS NSString 文本不同的颜色 标题+文本字体大小 行间距/删除不需要的字符 /以及自适应高度

    #import <Foundation/Foundation.h> @interface TextsForRow : NSObject @property(nonatomic,copy)N ...

  8. 03-CSS颜色、文本、字体、边框、背景

    # Css颜色,文本字体 ## css颜色表示法1.颜色名表示,比如:red 红色,gold 金色 2.16进制数值表示,比如:#ff0000 表示红色,这种可以简写成 #f00 3.RGB颜色: 红 ...

  9. CSS颜色及文本字体

    CSS颜色及文本字体 CSS颜色表示法 CSS文本设置 CSS边框属性 背景属性 元素溢出 CSS颜色及文本字体 CSS颜色表示法 颜色名表示,比如:red 红色,yellow黄色,pick粉色 16 ...

随机推荐

  1. linux----ulimit 限制

    ulimit -a 显示当前用户的各种限制. ulimit -n 的数值表示每个进程可以打开的文件数目. 一般情况下, ulimit -n 的数值是1024. 当进程打开的文件数目超过此限制时,该进程 ...

  2. 【转】GCC警告选项例解 -- 不错

    原文网址:http://blog.csdn.net/hcx25909/article/details/7383716 程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一 ...

  3. Wap touch flispan demo

    直接上代码了 仔细看看例子就会明白 简单实用 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8& ...

  4. nginx监听端口和反向代理端口的权限问题

    Linux的SELinux安全性控制除作用于文件系统外还作用于端口,这使得那些作为服务启动的进程只能在规定的几个端口上监听.为叙述方便我们称之为受控端口. nginx监听端口 要查看当前有哪些受控端口 ...

  5. 二分求解 三角形 stl的应用 涉及范围的二分查找可以先求上界再算下界,结果即上界减下界

     二分 Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu   Description You ...

  6. windows 基于命令行制作vhd虚拟磁盘

    什么是VHD? VHD是Virtual Hard Disk的简称,就是虚拟硬盘,就是能把VHD文件直接虚拟成一个硬盘,在其中能像真实硬盘一样操作,读取.写入.创建分区.格式化.如果你用过虚拟机,就会知 ...

  7. [每日一题] 11gOCP 1z0-052 :2013-09-25 Lock ――for update.................................C23

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12021587 正确答案:ABE 这道题需要我们了解锁的知识点. TM锁的模式: 0-Non ...

  8. 点击链接直接跳转到 App Store 指定应用下载页面

    //跳转到应用页面 NSString *str = [NSString stringWithFormat:@"http://itunes.apple.com/us/app/id%d" ...

  9. 用 oracle vitual box 克隆虚拟机,找不到eth0的解决方案

    用 oracle vitual box 克隆虚拟机 当我们需要使用多台虚拟机的时候,如果一台一台的安装,实在是太过麻烦了.所以一般的虚拟机软件都为我们提供了克隆已有虚拟机状态的功能.Oracle vi ...

  10. u3d shader使用

    先建立一个材质球Material 选择shader 把材质球Material 赋给图片