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

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

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

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. C51编译器的扩展关键字

    附表1-1 ANSIC标准关键字 附表1-2 C51编译器的扩展关键字

  2. 使用XAML在WPF项目中承载ArcGIS Engine地图控件开发

    原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式 ...

  3. Java Socket 简单梳理

    Sockets let you send raw streams of bytes back and forth between two computers, giving you fairly lo ...

  4. 如何为WPF添加Main()函数 程序入口点的修改

    一般的.WPF的Main()函数是自动生成的,不过有时候我们需要为我们的应用程序传参.那么自动生成的Main()函数就不会满足我们的要求. 那么如何为WPF Application 设置Main()函 ...

  5. cf471B MUH and Important Things

    B. MUH and Important Things time limit per test 1 second memory limit per test 256 megabytes input s ...

  6. Remove Element 解答

    Question Given an array and a value, remove all instances of that value in place and return the new ...

  7. 由闭包引起的对javascript代码可维护性的思考

    在最近的编程实践中由闭包的使用引起了我对javascript代码可维护性的思考.面向对象的其中一个特性封装性通过封装可以降低类与类之间或模块与模块之间耦合性从而使我们的设计更加高内聚低耦合,在大规模的 ...

  8. 转:Xshell显示找不到匹配的outgoing encryption算法怎么办

    原文出处:http://www.xshellcn.com/xsh_column/suanfa-bpp.html 由用户反应在使用xshell和xftp连接debian 7时出现找不到匹配的outgoi ...

  9. office 文件在网页中显示

    1.如何在网页上显示word和excel a.可以使用office组件或aspose将word 和excel 转换为pdf 然后在网页上打开pdf,但是效果不是很好 .比如说excel 多个工作薄不是 ...

  10. uglifyjs入门接触

    一.背景 今天在看<锋利的jQuery>文时,突然看到Uglifyjs压缩工具,感觉值得一试(玩),所以网上稍微搜了一下资料,简单的运用了一下,发现入门非常简单,当然网上有很多在线压缩工具 ...