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
QTextEdit中选中文本修改字体与颜色,全部文本修改字体与颜色(设置调色板的前景色、背景色、文字颜色以及基色)的更多相关文章
- iOS TabbarController 设置底部Toolbar图片和文字颜色选中样式
提取公共方法: -(void)createChildVcWithVc:(UIViewController *)vc Title:(NSString *)title image:(NSString *) ...
- 修改static控件背景颜色和文字颜色
当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息.如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄, ...
- Android中通过xml改变背景及文字颜色
原创文章,转载请注明出处,谢谢! 本篇主要介绍Android开发中,通过XML资源文件来设置控件在不同状态下的背景及文字颜色.关于xml改变背景及文字颜色的原理,大家可以去看一下郭霖大神的源码分析文章 ...
- VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]
在MFC中设置控件的背景色.字体.字体颜色.标题等属性主要是利用OnCtlColor函数来实现. 如: HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, ...
- select()事件默认选中文本框的全部内容,并改变其背景色和文字颜色
1.select()事件默认选中文本框的全部内容 拿到input标签的节点,调用select()方法即可.但是我做的vue项目中调用了此方法有一个bug,单次点击会全选内容,双次点击的时候全选会闪一下 ...
- Android NumberPicker 修改分割线颜色和高度及字体颜色大小
(1)重写NumberPicker已达到修改显示字体颜色大小 public class TextColorNumberPicker extends NumberPicker { public Text ...
- iOS NSString 文本不同的颜色 标题+文本字体大小 行间距/删除不需要的字符 /以及自适应高度
#import <Foundation/Foundation.h> @interface TextsForRow : NSObject @property(nonatomic,copy)N ...
- 03-CSS颜色、文本、字体、边框、背景
# Css颜色,文本字体 ## css颜色表示法1.颜色名表示,比如:red 红色,gold 金色 2.16进制数值表示,比如:#ff0000 表示红色,这种可以简写成 #f00 3.RGB颜色: 红 ...
- CSS颜色及文本字体
CSS颜色及文本字体 CSS颜色表示法 CSS文本设置 CSS边框属性 背景属性 元素溢出 CSS颜色及文本字体 CSS颜色表示法 颜色名表示,比如:red 红色,yellow黄色,pick粉色 16 ...
随机推荐
- iOS开发多线程-线程间通讯
一.NSThread 线程间的通讯 - (void)demoAboutNSThread { NSLog(@"demoAboutNSThread %@", [NSThread cur ...
- Typecho 代码阅读笔记(三) - 插件机制
转载请注明出处:http://blog.csdn.net/jh_zzz 以 index.php 为例: /** 初始化组件 */ Typecho_Widget:: widget('Widget_Ini ...
- TabHost刷新activity的方法
在android中,使用tabHost的时候,如果tab被点击,该tab所对应的activity被加载了,从别的tab切换回来的时候,activity不会再次被创建了(onCreate),所以要想每次 ...
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀.XML文档主要由元素节点和节点的属性共同构成的.它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子 ...
- 过程化开发2048智力游戏WebApp
时间荏苒,唯编程与青春不可辜负,感觉自己一直没有专心去提升编程的技能,甚是惭愧!!! 周五,无意间看到一个开发2048的视频,有点兴趣就动起手来了,虽然不擅长前端开发,在此献丑,分享一下自己使用过程化 ...
- Java中的native方法
博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...
- telnet 命令使用详解
1..关于NTLM验证由于Telnet功能太强大,而且也是入侵者使用最频繁的登录手段之一,因此微软公司为Telnet添加了身份验证,称为NTLM验证,它要求Telnet终端除了需要有Telnet服务主 ...
- 布局文件提示错误“No orientation specified, and the default is horizontal. This is a common so...”
完整的错误提示信息为:No orientation specified, and the default is horizontal. This is a common source of bugs ...
- LED音乐频谱之输出数据处理
转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/38023539 一.PWM调节 1.初始化 void DACInit() { C ...
- java的System.getProperty()方法能够获取的值
java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装 ...