Qt官方示例-字体采样器
2023-06-13 09:17:29 时间
❝预览系列字体的例子。❞
建立字体树显示。
QFontDatabase database;
fontTree->setColumnCount(1);
fontTree->setHeaderLabels(QStringList() << tr("Font"));
foreach (QString family, database.families()) {
const QStringList styles = database.styles(family);
if (styles.isEmpty())
continue;
QTreeWidgetItem *familyItem = new QTreeWidgetItem(fontTree);
familyItem->setText(0, family);
familyItem->setCheckState(0, Qt::Unchecked);
familyItem->setFlags(familyItem->flags() | Qt::ItemIsAutoTristate);
foreach (QString style, styles) {
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
styleItem->setText(0, style);
styleItem->setCheckState(0, Qt::Unchecked);
styleItem->setData(0, Qt::UserRole, QVariant(database.weight(family, style)));
styleItem->setData(0, Qt::UserRole + 1, QVariant(database.italic(family, style)));
}
}
绑定信号槽更新字体和状态。
connect(fontTree, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
this, SLOT(showFont(QTreeWidgetItem*)));
更新字体。
void MainWindow::showFont(QTreeWidgetItem *item)
{
if (!item)
return;
QString family;
QString style;
int weight;
bool italic;
if (item->parent()) {
family = item->parent()->text(0);
style = item->text(0);
weight = item->data(0, Qt::UserRole).toInt();
italic = item->data(0, Qt::UserRole + 1).toBool();
} else {
family = item->text(0);
style = item->child(0)->text(0);
weight = item->child(0)->data(0, Qt::UserRole).toInt();
italic = item->child(0)->data(0, Qt::UserRole + 1).toBool();
}
QString oldText = textEdit->toPlainText().trimmed();
bool modified = textEdit->document()->isModified();
textEdit->clear();
QFont font(family, 32, weight, italic);
font.setStyleName(style);
textEdit->document()->setDefaultFont(font);
QTextCursor cursor = textEdit->textCursor();
QTextBlockFormat blockFormat;
blockFormat.setAlignment(Qt::AlignCenter);
cursor.insertBlock(blockFormat);
if (modified)
cursor.insertText(QString(oldText));
else
cursor.insertText(QString("%1 %2").arg(family).arg(style));
textEdit->document()->setModified(modified);
}
关于更多
- 在「QtCreator软件」可以找到:
- 或在 以下「Qt安装目录」找到:
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\painting\fontsampler
- 「相关链接」
https://doc.qt.io/qt-5/qtwidgets-painting-fontsampler-example.html
相关文章
- VS中新建Qt项目工程后显示无法打开源文件“QtWidgets/QApplication”的解决方案「建议收藏」
- C/C++ Qt StandardItemModel 数据模型应用
- C/C++ Qt TableWidget 表格组件应用
- Qt官方示例-拖动图标
- Qt官方示例-QML标签页
- Qt官方示例-DTLS服务器
- Qt官方示例-矢量变形
- Qt官方示例-数据库浏览器
- Qt官方示例-俄罗斯方块
- Qt官方示例-双向按钮
- Qt官方示例-迷你网页浏览器
- Qt官方示例-Qml之ListView
- Qt官方示例-MDI(多文档界面)
- Qt在Linux上的移植实践(qt移植到linux)
- 使用Qt快速连接MySQL数据库(qt连接mysql)
- 开发linux下 Qt 图形界面开发实践(linux下qt图形界面)
- GUI应用Linux下Qt开发GUI应用:实现梦想的开发之路(linux下qt开发)
- Qt编程实现MySQL数据库调用(qt调用MySQL数据库)
- Linux 下 Qt 安装教程(qt安装教程linux)
- 集成开发Linux与Qt集成开发:实现无缝交互(linux与qt)
- 深入浅出:Qt在嵌入式Linux中的开发(qt嵌入式linux)
- 使用Qt框架插入MySQL中的数据(qt插入mysql)
- Linux环境下如何卸载Qt应用(linux卸载qt)
- Qt在Linux操作系统中的运行和应用(qt运行linux)
- Qt与SQLServer结合,提升开发效率(qt和sqlserver)
- QT开发MSSQL数据库技术实现(qt mssql)