1. 程式人生 > >QTextEdit中選中文字修改字型與顏色,全部文字修改字型與顏色

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

2550));

    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這個函式介面了,是因為這個函式是針對當前選中的,從當前游標位置開始往後改變的

相關推薦

QTextEdit選中文字修改字型顏色全部文字修改字型顏色

~~~~我的生活,我的點點滴滴!! 當然以下內容都可以通過設定樣式來達到目的,但是下面不使用這樣的方法 先來看張圖,理解此圖基本就能實現上面所要達到的目的了 Widget::Widget(QWidget *parent)     : QWidget(parent),

java檔案操作 (1)——判別指定檔案是否存在讀取檔案修改時間和大小讀取文字檔案內容文字檔案寫入指定內容

任務要求: 完成一個java application應用程式,判別指定路徑下指定檔名的檔案是否存在。 如果指定檔案存在,讀取並分別顯示其修改時間和檔案大小等屬性。 以文字方式開啟某一指定路徑指定檔名的文字檔案,讀取其內容並顯示。 以文字方式向某

MFC只修改字型的大小無需重新設定字型型別

mfc字型大小的修改 以修改List 控制元件的字型大小從而改變表格行高為例: LOGFONT logfont;//最好弄成類成員,全域性變數,靜態成員 CFont *p

小夥發現了Python編寫word文件的庫編輯文字方便多了

新的一年,小編又和大家見面啦。十分開心又和大家分享乾貨了~ Word文件相信廣大的辦公室家族並不陌生吧?今天咱們聊聊Python中一個可以用來讀寫word文件的Python庫,編輯文件分分鐘的事情哦~   學習Python中有不明白推薦加入交流裙    &nb

uilabel 的相關處理 類富文字(自動換行設定行高同一個label多種顏色文字加下劃線 首行縮排 等 等)

1.自動換行 UIFont *font=[UIFont systemFontOfSize:lableFont]; self.numberOfLines=0; self.lineBreakMode=NSLineBreakByWordWrapping; self.text=co

html的css和js控制inputtextarea文字框自動獲取焦點

方法:1:js控制自動獲取焦點 <html> <head> <script type="text/javascript"> function setFocus() { do

Ubuntu更改預設的root使用者密碼以及怎樣修改使用者密碼

新安裝的Ubuntu系統中預設的root使用者密碼是多少?該怎麼修改?## 如題,相信許多剛接觸Ubuntu系統的新手大多會遇

用shell實現將動態ip修改為靜態ip靜態ip修改為其它靜態ip

linux 用shell修改ip (1) 將動態ip修改為靜態ip的思路 ① 修改ip之前,先備份ifcfg-eth0文件 ② 進入網卡配置目錄 /etc/sysconfig/network-scripts/ifcfg-eth0 ③ 修改BOOTPROTO=static ④ 修

shell實現將動態ip修改為靜態ip靜態ip修改為其它靜態ip

 shell實現將動態ip修改為靜態ip,靜態ip修改為其它靜態ip (1) 將動態ip修改為靜態ip的思路    ① 修改ip之前,先備份ifcfg-eth0檔案    ②  進入網絡卡配置目錄  /etc/sysconfi

鏈棧的建立使用進位制轉換括號匹配問題

鏈棧的建立與使用(先進後出)     包含兩個運用                 1.判斷一個表示式中符號"(",")","[","]","{","}"是否匹配,若匹配返回1,不匹配返回0;                 2.數制轉換:將十進位制轉換為隨意進位制 問

OpenPose的安裝配置實現以及遇到的問題解決方法

參考部落格地址:OpenPose安裝配置與測試 之前在自己電腦上配置了一下,但執行不起來,OpenPose對於電腦的硬體要求還是很高的,我的小破電腦實在是撐不起來。。。之後用公司電腦才跑起來了。下面有官網釋出的配置要求,以供參考。 我的電腦配置:

ubuntu 改變終端提示符的顏色使輸入和輸出不同顏色易於區分

因為在終端下,命令提示符、輸入及輸出均為一種顏色(ls命令除外),因此當輸出內容比較多時,很容易花眼,不易 區分,這裡我把它更改成如 BackTrack下的命令列顏色,即[email protected]為紅色(這裡以我的系統[email protect

divspan block-line塊元素in-line內聯元素的區別(H5)

> div與span區別,div與span用法 div與span區別及用法- http://blog.csdn.net/cao478208248/article/details/25719735   div佔用的位置是一行,span佔用的是內容有多寬就佔用多寬的空間距離

linux ftpsftpftp的主動模式被動模式

sftp是Secure File Transfer Protocol的縮寫,安全檔案傳送協議。可以為傳輸檔案提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一部份,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在

處理ExtJs記錄修改並重新整理後再次點修改記錄不變的問題

在專案開發中遇到這樣一個問題,點選Grid中的一條記錄並修改,修改完後儲存並且重新整理表格,後臺已儲存成功,並且前臺grid中的值也已經改變。這時候被修改的記錄還處於選中狀態,然後再次點修改,發現表單中的值還是原來的值,但是在選擇另外一條記錄後,再次選擇這條記錄並修改時

查詢以太幣及代幣餘額價格進行以太幣代幣的轉賬(兩種方式)並獲取交易記錄

查詢以太幣及代幣餘額與價格,進行以太幣與代幣的轉賬(兩種方式)並獲取交易記錄 1 // 補齊64位,不夠前面用0補齊 2 function addPreZero(num){ 3 var t = (num+'').length, 4 s = ''; 5 for(var i=0; i&l

編輯框字型修改和大小字號顏色設定

首先要了解 CFont類,它 封裝了一個 Windows 圖形裝置介面( GDI)字型,併為操作字型提供了成員函式 。使用CreatFontW函式來建立字型。函式的原型如下:BOOL CreateFont( int nHeight, // 字型高度:0為預設高度,非0絕對值為字型高度in

css字型段落屬性設定/文字高階樣式

CSS中字型與段落屬性 毫無疑問,不管什麼網站,文字一定是必不可少。文字可以是網頁傳播資訊的主要手段。那麼怎麼顯示文字,才能更加的美觀,那麼大家需要了解以下文字屬性。   字型屬性 屬性 用途 語法(一些寫法)

Qt使用Qss修改邊框寬度字型顏色修改選擇時背景色和字型顏色

以Dialog為例 setStyleSheet("QDialog {border: 1px solid #CCCCCC;}"); 以LineEdit為例 setStyleSheet("color:white"); 以日曆為例 setStyleSheet(

CAD圖紙文字顏色要怎麽修改

roc 幫助 到你 .com ces follow html mar 直接 現在隨著科技的不斷發展,人們對於住房的要求也就越來越高,那CAD行業也隨著不斷的壯大發展,在CAD中日常的工作就是CAD繪圖,在繪制的時候再有的特別的地方需要給圖紙做一下說明標註,但是為了讓圖紙的內