QT 类及其实现效果(4)--字体设置

字体选择条
fontBox = new QFontComboBox(toolBar);
fontBox->setFontFilters(QFontComboBox::ScalableFonts);
颜色选择条:
void Palette::fillColorList(QComboBox * combobox)
{
    QStringList colorList = QColor::colorNames();
   
    QString color;
    foreach(color,colorList)
    {
 QPixmap pix(QSize(70,20));
     pix.fill(QColor(color));
     combobox->addItem(QIcon(pix),NULL);
     combobox->setIconSize(QSize(70,20));
     combobox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
    }
}
字体大小选择条:
 QFontDatabase db;
    foreach(int size, db.standardSizes())
    {
     sizeBox->addItem(QString::number(size));
    }
字体相关设置
字体
void FontSet::slotFont(QString f)
{
    QTextCharFormat fmt;
    fmt.setFontFamily(f);   
    mergeFormat(fmt);
}
大小
void FontSet::slotSize(QString num)
{
    QTextCharFormat fmt;
    fmt.setFontPointSize(num.toFloat());   
    mergeFormat(fmt);
}
粗体
void FontSet::slotBold()
{
    QTextCharFormat fmt;
    fmt.setFontWeight(boldBtn->isChecked()? QFont::Bold : QFont::Normal);   
    mergeFormat(fmt);
}
斜体
void FontSet::slotItalic()
{
    QTextCharFormat fmt;
    fmt.setFontItalic(italicBtn->isChecked());   
    mergeFormat(fmt);
}
底划线
void FontSet::slotUnder()
{
    QTextCharFormat fmt;
    fmt.setFontUnderline(underBtn->isChecked());   
    mergeFormat(fmt);
}
字体颜色
void FontSet::slotColor()
{
    QColor color = QColorDialog::getColor (Qt::red,this);   
   
    if(color.isValid())
    {
  QTextCharFormat fmt;
        fmt.setForeground(color);   
        mergeFormat(fmt);
    }
}


//  设置光标的选区,使格式作用于选区内的字符,若没有选区则作用于光标所在处的字符
void FontSet::mergeFormat(QTextCharFormat format)  
{
    QTextCursor cursor = text->textCursor();
    if (!cursor.hasSelection())
       cursor.select(QTextCursor::WordUnderCursor);
    cursor.mergeCharFormat(format);
    text->mergeCurrentCharFormat(format);
}

调用QTextCursor的mergeCharFormat()函数把参数format所表示的格式
应用到光标所在处的字符上
调用QTextEdit的mergeCurrentCharFormat()函数把格式应用到选区内的所有字符上。


QTextEdit对象的光标所在的位置字体改变时,会发射currentCharFormatChanged()信号
void FontSet::slotCurrentFormatChanged(const QTextCharFormat &fmt)
{
    fontBox->setCurrentIndex(fontBox->findText(fmt.fontFamily()));
    sizeBox->setCurrentIndex(sizeBox->findText(QString::number(fmt.fontPointSize())));
    boldBtn->setChecked(fmt.font().bold());
    italicBtn->setChecked(fmt.fontItalic());
    underBtn->setChecked(fmt.fontUnderline());
}

 

 

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值