首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得没有GUI的字体度量(控制台模式)

获得没有GUI的字体度量(控制台模式)
EN

Stack Overflow用户
提问于 2015-07-30 19:44:05
回答 3查看 3.1K关注 0票数 9

假设某些图像必须由Qt控制台程序生成,内部算法需要字体度量(它们使用文本宽度/高度作为输入来计算绘图的位置)。这个程序必须在没有任何GUI的Linux上运行(runlevel-3,基本上是一个没有任何显示服务器的集群)。

问题:只有在GUI模式下运行Qt应用程序时, QFontMetrics才可用。

没有任何显示服务器的情况下获得字符串度量的解决方法?

EN

回答 3

Stack Overflow用户

发布于 2015-08-10 10:37:14

好的,在补充意见之后,我想我理解你的问题。就这么做吧:

代码语言:javascript
复制
include <QApplication>

int main(int argv, char **args)
{
    QApplication app(argv, args);
    QApplication::processEvents(); // this should allow `QApplication` to complete its initialization

    // do here whatever you need 

    return 0; // or some other value to report errors
}

您也可以尝试使用QGuiApplication,这个版本不需要(不使用)小部件。

另见文档中的示例如何处理none gui案件。

这段代码在我的Qt 5.3 Ubnutu上运行得很好

代码语言:javascript
复制
#include <QGuiApplication>
#include <QFontMetrics>
#include <QDebug>

int main(int argc, char *argv[])
{
    QGuiApplication a(argc, argv);

    QFont font("Times", 10, QFont::Bold);
    qDebug() << font;
    QFontMetrics metrics(font);

    qDebug() << metrics.boundingRect("test");

    return 0;
}

当使用QApplication时,它也适用于QT4.8。

项目文件非常简单

代码语言:javascript
复制
QT       += core
TARGET = MetricsNoGui
TEMPLATE = app
SOURCES += main.cpp
票数 3
EN

Stack Overflow用户

发布于 2019-02-15 17:07:09

Qt4.8有就是这样 QApplication构造函数,它的第三个参数可以帮助解决这个问题。简单地提供假作为第三个参数,并喜欢在Qt控制台应用程序中使用QFontMetrics。如果在没有X服务器的系统上启动应用程序,就不会出现崩溃。

票数 0
EN

Stack Overflow用户

发布于 2021-03-09 17:41:13

我没有找到一种将QFontQPrinterQCoreApplication结合使用的方法:(但是,如果您能够安装Xvfb,那么您的QApplication也可以在服务器上运行,不需要任何显示)。我正在使用这个设置在一个无头树莓Pi零。

代码语言:javascript
复制
Xvfb :1 -screen 0 1024x768x16 &
export DISPLAY=:1.0
./YourQApplication

这不是最优雅的解决方案,但经过数小时的绝望搜索,这是我唯一找到的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31732698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档