- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在创建一个模仿 A4 打印页面的自定义 Qt 小部件,但在让字体以正确的大小呈现时遇到问题。我的小部件使用 QPainter::setViewport
和 QPainter::setWindow
来模拟 A4 页面,使用十分之一毫米的单位,这使我可以轻松地绘制。但是,尝试以特定磅值创建字体似乎不起作用,使用 QFont:setPixelSize
也不准确。这是一些代码:
View::View(QWidget *parent) :
QWidget(parent),
printer(new QPrinter)
{
printer->setPaperSize(QPrinter::A4);
printer->setFullPage(true);
}
void View::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.setWindow(0, 0, 2100, 2970);
painter.setViewport(0, 0, printer->width(), printer->height());
// Draw a rect at x = 1cm, y = 1cm, 6cm wide and 1 inch high
painter.drawRect(100, 100, 600, 254);
// Create a 72pt (1 inch) high font
QFont font("Arial");
font.setPixelSize(254);
painter.setFont(font);
// Draw in the same box
// The font is too large
painter.drawText(QRect(100, 100, 600, 254), tr("Wg\u0102"));
// Ack - the actual font size reported by the metrics is 283 pixels!
const QFontMetrics fontMetrics = painter.fontMetrics();
qDebug() << "Font height = " << fontMetrics.height();
}
所以我要求一个 254 高的字体(1 英寸,72 磅),它太大了,当我通过 QFontMetrics
查询字体高度时,确实是 283 高。
有没有其他人知道在使用像这样的自定义映射模式时如何使用以磅为单位的字体大小?这一定是可能的。请注意,我也看不到如何在逻辑/设备点之间进行转换(即 Win32 DPtoLP
/LPtoDP
等价物。)
编辑:好吧,事实证明我的代码毕竟工作正常。我将它转换为与打印机一起工作,打印出来,然后使用各种文字处理器打印相同的文本,结果完全相同。似乎要求字体大小没有考虑下降,这似乎是常态。
最佳答案
QFont 可能会也可能不会匹配您请求的确切字体。 QFontMetrics::height()在我的系统上返回大小为 284,但是 QFontInfo::pixelSize()返回请求的大小 254。我认为不同之处在于 height()
包括下降,其中 pixelSize()
返回匹配字体的像素大小,这意味着我有一个匹配项。
至于绘图、放置和转换,您需要小心,因为打印机设备与屏幕设备不同,分辨率也不匹配。使问题进一步恶化的是,如果不在打印对话框中调用设置,就无法获得准确的打印机指标。设备独立性让您接近所见即所得,但并不总是足够接近。
在您的示例中,绘制设备是this
。因此,您可以通过 logicalDpiX() 获得逻辑 dpi。和 logicalDpiY()功能(以及它们的物理等价物)。
关于c++ - Qt 所见即所得 - 字体大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932290/
在基于 Web 的应用程序中,哪一个更好和更理想? 编辑: 其实我正在开发一个社区网站。所以用户的水平可能会有所不同。听说过 WYSIWYG 编辑器的 XSS 安全问题。我也不熟悉 WYSIWYM 编
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
有人有使用 Google Closure Editor/WYSIWYG 的经验吗?我正在考虑从 CKEDITOR 迁移到 Google Closure Editor/WYSIWYG。理想情况下,我很想
我想构建另一个 WYSIWYG 编辑器。我已经有一个脚本可以在当前选择周围包装标签,即使对于 Firefox 多重选择也是如此,但在我编辑 html 后它不会重新选择范围。怎么会这样? 这是我的代码:
我无法初始化 summernote WYSIWYG editor在我的应用程序中,我不知道为什么不起作用。 我开始导入JS和CSS文件,打开一个id为“summernote”的div标签,在底部插入j
我有以下代码“js”,浏览器将此错误放在“第 8 行,“未定义不是函数”。第 8 行是: $('.wysiwyg', context).once('wysiwyg', function () { 我不
我希望允许用户使用在线 WYSISYG 编辑器创建 PDF 文件。基本上是图像和文本,他们可以删除并创建 PDF。我将使用 jquery-ui 创建一个 UI。 我遇到了Flying Saucer这似
我们有一个编辑器编辑器,我们从数据库中填充它,但是一旦我们提交回数据,我们就需要清除文本区域。 我们尝试了各种组合,但无法清除它。 jQuery("#redactor").redactor('set'
Closed. This question is off-topic。它当前不接受答案。
我正在创建一个模仿 A4 打印页面的自定义 Qt 小部件,但在让字体以正确的大小呈现时遇到问题。我的小部件使用 QPainter::setViewport 和 QPainter::setWindow
我现在使用 CLEditor , 但我不能像页面的其余部分那样设置它的样式。那么有没有jQuery UI所见即所得的文本编辑器呢?或者有没有一种方法可以使用 jQuery UI 小部件元素来设置 CL
我正在尝试将 TinyMCE 或 CKEditor 集成到 Django 中,但我不知道如何管理上传图片。我一直在搜索并找到了一些 django 应用程序,但它们无法与我的 Django 版本(1.1
我正在开发一个邮件系统来发送大量电子邮件。我为 redactor 制作了一个插件,它向例如添加了一个标签。名。这些标签不应由用户编辑,只能删除。 我的问题是,每次我用 this.code.get ()
我几乎只是在寻找他们在添加评论时使用的与所见即所得非常相似的代码。我希望他们能够按回车键,它会自动抛出 标签。如果他们知道 HTML 标签,我知道让它在文本区域中工作的非常简单的方法,但几乎没有用户会
在执行 ckEditor 时,我想要一个特定的按钮已经被点击(以编程方式)。例如我想要按钮 blockquote 已经被点击: 这样当用户打开 ckEditor 时,与 blockquote 按钮相关
我正在寻找 WYSIWYG HTML 编辑器。我将在现有项目中使用它来生成 HTML 代码。因此,用户应该在编辑器中插入代码并设置代码样式。如果用户保存或按下按钮,我将获取 HTML 代码并将其保存在
我正在开发一个所见即所得编辑器(定制别人的代码),并且遇到了一些我似乎无法克服的问题。 到目前为止,我已经能够让大多数自定义 div 正常工作,但我在一些事情上遇到了一些麻烦: 问题 1:如果光标位于
我正在参与一个项目 1.6 2.5.1 2.3.0-gwt22 我无法升级。 我正在寻找一个可以导入图像的所见即所得 我尝试一下 https://www.tinymce.com/ tinymce 的
我正在尝试创建一个基于 Web 的 WYSIWYG 编辑器,它由一个 Canvas 和一个带有小部件的工具栏组成,例如文本对象、形状对象、线条对象、图像对象、视频对象和照片库对象。人们可以从工具栏中单
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我是一名优秀的程序员,十分优秀!