您的位置:首页 > 编程语言 > Qt开发

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

2013-01-01 22:48 543 查看
字体选择条

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());

}



本文来源:http://blog.csdn.net/yongan1006/article/details/7690686
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设置 字体 Qt