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

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

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

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

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

时间: 2024-10-06 01:10:25

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

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

提取公共方法: -(void)createChildVcWithVc:(UIViewController *)vc Title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage { //图片渲染 vc.tabBarItem.title=title; vc.navigationItem.title=title; vc.tabBarItem.image=[UIImage imageNam

怎么修改PDF格式文件,PDF文件字体颜色怎么修改!

想必大家已经接触多PDF格式文件了吧,同样也知道修改PDF文件需要使用到专业的PDF编辑器,但是大家是否知道PDF编辑器的一些小技巧呢,比如如何用PDF编辑器修改PDF文件的文字颜色?这些都是非常简单的,接下来就一起来学习一下吧! 下面就来一起看看如何使用迅捷PDF编辑器来修改PDF中的文字吧. 1.网上搜索,找到相关资源下载迅捷pdf编辑器,安装后打开至主界面. 2.通过点击栏目上方工具栏中的"文件-打开"打开需要编辑的PDF文件,这样就可以直接打开PDF文件了,是不是很方便,既能查

如何在终端中打印带颜色的文本

echo命令 echo是终端下最常用的命令之一,用于在显示器上显示一段文字.一般格式为: echo [ -option ] 字符串 它有2个常用的选项,一个是-n,另一个是-e,下面的图就是 man echo 的结果: echo将字符串输出后是会自动换行的,如果不想换行就需要加上-n选项. -e的作用是强大的,想要输出有颜色的文字就不得不用借助于-e了.为什么要带颜色?看看下图就知道了 都是毛大头,快速辨别的方法就是看数字和颜色.如若看不到数字,单看颜色也能一眼辨别. -e:启用反斜线控制字符的

jquery选中checkbox多选项并添加到文本框中

<script> function check(){ var dd = ""; if($("input[type='checkbox'][name='mokedoc']:checked").attr("checked")){//选中了 $('input:checkbox[name="mokedoc"]:checked').each(function() { alert($(this).val()); dd += $

CAD图纸中的文字颜色要怎么修改

现在随着科技的不断发展,人们对于住房的要求也就越来越高,那CAD行业也随着不断的壮大发展,在CAD中日常的工作就是CAD绘图,在绘制的时候再有的特别的地方需要给图纸做一下说明标注,但是为了让图纸的内容和标注的文字区分开来,我们就需要将文字的颜色更改一下,那在CAD图纸中的文字颜色要怎么修改?下面小编就来教教大家具体的操作方法. 第一步:首先,将电脑进行打开,如果电脑中没有安装CAD编辑器.那就在电脑桌面上任意打开一个浏览器,在搜索框中搜索迅捷CAD编辑器,接着点击进入官网,点击下载安装最新版本的

百思不得姐第4天:文本框占位文字颜色

一:设置登录界面和注册界面的切换 #import "CQLoginViewController.h" #import "CQCustomTextField.h" @interface CQLoginViewController () @property (weak, nonatomic) IBOutlet NSLayoutConstraint *centerTopConstraints; @property (weak, nonatomic) IBOutlet UI

[R语言绘图]绘图样式设置(符号、线条、颜色、文本属性)

设置图像样式有两种方法,一种是全局修改,一种只针对一幅图片有效. 全局修改 a<-c(1:10) #全局修改 old_par<-par(no.readonly=TRUE) #记录默认样式到变量old_par中 par(lty=2,pch=17) #设置线型lty=2虚线,pch=17实心三角形,键值对的方式进行设置 #第一幅图,已经和默认样式不一样了 b<-rnorm(10) plot(a,b,type='b') #第二幅图,和第一幅图样式一样 b<-rnorm(10) plot(

css的入门——css简介,颜色,文本

CSS简介 1.理解CSS:设想元素周围有一个看不见的盒子. CSS将样式规则与HTML元素相关联,CSS通过将规则与HTML元素相关联的方式来工作.这些规则用来控制指定元素中的内容如何显示.一条CSS规则包含两个部分:一个选择器和一条声明. p {font-family:Arial;} 这条规表明所有<p>元素都已更改用Arial字体来显示. 其中绿色部分为选择器,选择器表明要应用规则的元素.同一条规则可以应用在多个元素上,前提是你需要将这些元素名用逗号隔开. 蓝色部分是声明,声明用于表明应

在带(继承)TextView的控件中,在代码中动态更改TextView的文字颜色

今天由于公司项目需求,须要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现. 这种方法全然没问题.可是在后来的开发过程中,却遇到了一些困扰非常久的小困难.大概需求是:在代码中.动态的获取tab的个数,然后初始化RadioGroup,每个tab相应一个RadioButton,即加入一个tab就要向RadioGroup中add一个RadioButton,然后在button选中时要更改文字颜色.由于是动态加入,所以无法在xml中配置了RadioBut