PlainTextEdit,如何在运行时打印不同的字体样式和字体大小文本?

时间:2018-02-01 05:48:59

标签: c++ qt

我正在开发一个Qt项目,我在其中使用QPlainTextEdit在运行时从机器打印接收的数据。一切都运行正常,但我想更新其他风格的某种类型的数据,例如我在我的固件'<>'中使用的用于标题。

Qt方

if(serialArray[0]=='<' && serialArray[1] == 'h' && serialArray[2] == '>')
{
    ui->plainTextEdit->setStyleSheet("background-color: #524141; color:white; font-family:\"Helvetica\"; font-size:20px;");      //20px

    ui->plainTextEdit->appendPlainText(serialArray);  

}else
{ 
    ui->plainTextEdit->setStyleSheet("background-color: #524141; color:white; font-family:\"Helvetica\"; font-size:15px;") // 15px

    ui->plainTextEdit->appendPlainText(serialArray);
}

使用20px打印第一个标题,如果下一个数据没有标题所有字体大小设置为15px,因为plainTextEdit属性更改不是text属性。我该怎么办?

标题始终以20px /其他样式打印

正常文字打印15px /与其他样式

我也使用了带游标的insertHTML,但没有按我的意愿工作。

void MainWindow::processSerialdata()
{
    serialArray = s_port->readAll();
    if(serialArray[0]=='M' && serialArray[1] == 'C' && serialArray[2] == 'H')
    {
         MCH_DATA.mch               = serialArray.mid(0,3);
         MCH_DATA.Frame_Id          = serialArray.mid(4,4);
         MCH_DATA.Frame_Len         = serialArray.mid(9,4);
         MCH_DATA.Source_Id         = serialArray.mid(14,12);
         MCH_DATA.Dest_Id           = serialArray.mid(27,12);
         MCH_DATA.Func_code         = serialArray.mid(40,1);
         MCH_DATA.UnitID            = serialArray.mid(42,12);
         MCH_DATA.io_status         = serialArray.mid(55,22);
         MCH_DATA.extra             = serialArray.mid(77,3);
         MCH_DATA.adc_sensor_values = serialArray.mid(80,80);
         MCH_DATA.hp_lp_sensors     = serialArray.mid(160,48);
         MCH_DATA.final_status      = serialArray.mid(208,1);
         MCH_DATA.feature_bytes     = serialArray.mid(209,30);
         MCH_DATA.crc               = serialArray.mid(239,6);
         MCH_DATA.etx               = serialArray.mid(246,3);
         upDateGUI();
    }
    else{
        if(serialArray[0]=='<' && serialArray[1] == 'h' && serialArray[2] == '>')
        {
            ui->plainTextEdit->setStyleSheet("background-color: #524141; color:white; font-family:\"Helvetica\"; font-size:20px;");
            ui->plainTextEdit->appendPlainText(serialArray);
        }else
        {
            ui->plainTextEdit->setStyleSheet("background-color: #524141; color:white; font-family:\"Helvetica\"; font-size:15px;");
            ui->plainTextEdit->appendPlainText(serialArray);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

appendHtml()似乎工作正常;它允许您使用任何标准HTML样式标记指定文本的外观。例如:

textEdit->appendHtml("<h3>Header Three</h3>");
textEdit->appendHtml("<h2>Header Two</h2>");
textEdit->appendHtml("<h1>Header One</h1>");
textEdit->appendHtml("<b>Bold</b>");
textEdit->appendHtml("Normal Text");

得出这个:

screenshot of Qt MainWindow example with QPlainTextEdit