在Qt C++中设置控件的字号主要通过QFont类和控件的setFont()方法实现。以下是详细步骤和示例:
1. 直接通过QFont设置
// 创建控件
QLabel *label = new QLabel("示例文本");
QPushButton *button = new QPushButton("点击");
// 创建字体对象并设置字号
QFont font;
font.setPointSize(12); // 设置字号为12磅
font.setBold(true); // 可选:加粗
// 应用字体到控件
label->setFont(font);
button->setFont(font);
2. 直接修改控件现有字体
QLabel *label = new QLabel("动态调整");
QFont existingFont = label->font(); // 获取当前字体
existingFont.setPointSize(14); // 修改字号
label->setFont(existingFont); // 应用修改
3. 全局设置应用程序字体
在main.cpp中设置全局字体,影响所有控件:
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QFont globalFont("微软雅黑", 10); // 字体族+字号
a.setFont(globalFont); // 全局生效
MainWindow w;
w.show();
return a.exec();
}
4. 通过样式表(QSS)设置
使用Qt Style Sheet直接设置字号(支持部分控件):
QLabel *label = new QLabel("样式表设置");
label->setStyleSheet("font-size: 16pt; color: blue;"); // 字号+颜色
5. 像素级精确控制(高级)
使用setPixelSize()替代setPointSize()实现像素级精度:
QFont font;
font.setPixelSize(20); // 直接设置像素大小
label->setFont(font);
关键点说明
- 单位区别:
setPointSize():基于物理磅值(1磅=1/72英寸),适合打印场景。setPixelSize():基于屏幕像素,适合屏幕精确显示。
- 继承规则:子控件默认继承父控件字体,可通过显式设置覆盖。
- 动态调整:运行时可通过
font().setPointSize()实时修改。
常见问题解决
- 字体不生效:检查是否被父控件/全局样式覆盖,或尝试
label->repaint()强制刷新。 - 跨平台差异:不同系统字体渲染可能存在细微差异,建议使用通用字体族(如"Sans Serif")。
通过以上方法,可灵活控制Qt控件的字号及样式。根据需求选择代码直接设置、全局配置或样式表方案。
1915

被折叠的 条评论
为什么被折叠?



