(1)本类,老师在课本里没有讲。所以,大致测试一下其成员函数。还有一处,老师没有讲,就是文本格式类。
(2)访问 控件的 QFont 属性,是由窗体基类, QWidget 提供的 :
++
(3) 本 QFont 类并不继承于 QObject ,也没有属性,成员函数全是 public 权限的 :
++补充另一个成员函数,关于 family :
(4)
++补充下点大小 pointSize 与像素大小 pixelSize 的区别 :
++ 所以,要多用 点大小的成员函数。
(5) 关于字体 style 的内容很多,集中于此,虽然感觉并不重要 :
++ 给出其代码版 :
class QFont {
public:
//这个枚举描述了用于显示文本的不同字体样式。
enum Style {
StyleNormal,
StyleItalic, //专门为表示斜体文本而设计的斜体字形。
StyleOblique //具有斜体外观的字符,通常基于未加修饰的字符,
//但未经过专门微调以用于表示斜体文本。
};
Q_ENUM(Style)
Style style() const; //style 里最有用的就是斜体。用下面的 italic()更好
void setStyle(Style style);
QString styleName() const;
void setStyleName(const QString &);
inline bool italic() const { return ( style() != StyleNormal ) ; }
inline void setItalic(bool b) { setStyle(b ? StyleItalic : StyleNormal); }
//样式提示用于字体匹配算法,当选定的字体系列不可用时,帮助找到合适的默认系列。
enum StyleHint {
Helvetica, SansSerif = Helvetica , //这俩值相等
Times, Serif = Times , //字体匹配器更喜欢衬线字体。
Courier, TypeWriter = Courier ,
OldEnglish, Decorative = OldEnglish, //字体匹配器更喜欢装饰性字体。
System , //the font matcher prefers system fonts.
AnyStyle , //让字体匹配算法来选择字体系列。这是默认设置。
Cursive ,
Monospace, //字体匹配器更喜欢映射到CSS通用字体系列'monospace'的字体。
Fantasy //字体匹配器更喜欢映射到CSS通用字体系列'fantasy' 的字体。
};
Q_ENUM(StyleHint)
StyleHint styleHint() const;
void setStyleHint(StyleHint, StyleStrategy = PreferDefault);
StyleStrategy styleStrategy() const;
void setStyleStrategy(StyleStrategy s);
//样式策略告诉字体匹配算法应该使用哪种类型的字体来找到合适的默认系列。
enum StyleStrategy {
PreferDefault = 0x0001, //默认样式策略。它不偏好任何类型的字体。
PreferBitmap = 0x0002, //偏好位图字体(而不是轮廓字体)
PreferDevice = 0x0004,
PreferOutline = 0x0008, //偏好轮廓字体(而不是位图字体)
ForceOutline = 0x0010,
PreferMatch = 0x0020,
PreferQuality = 0x0040,
PreferAntialias = 0x0080,
NoAntialias = 0x0100,
NoSubpixelAntialias = 0x0800,
PreferNoShaping = 0x1000,
NoFontMerging = 0x8000 //如果为某种书写系统选定的字体不包含请求绘制的字符,
//那么Qt将自动选择包含该字符的类似样式的字体。`NoFontMerging~标志会禁用此功能。
//请注意,启用此标志并不会阻止Qt在选定的字体不支持文本的书写系统时自动选择合适的字体。
};
Q_ENUM(StyleStrategy)
};
(6)字体的粗细 :
(7)字体上的下划线,删除线与上划线 :
++ 给出使用上划线的范例,来自一言 :
数学公式编辑器
使用上划线标注变量或公式:
QTextEdit *formulaEditor = new QTextEdit(this);
formulaEditor->setHtml( "<span style='text-decoration: overline;'>x</span>
+ <span style='text-decoration: overline;'>y</span>
= <span style='text-decoration: overline;'>z</span>" );
文档编辑
强调特定术语:
QTextEdit * docEditor = new QTextEdit(this);
docEditor->insertHtml("<p>关键术语:<span style='text-decoration: overline;'>量子计算</span></p>");
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
谢谢