用Qt编写的可执行文件在Fedora 16和18上表现不同

Executable written in Qt behaves differently on Fedora 16 and 18

本文关键字:Fedora Qt 可执行文件      更新时间:2023-10-16

简而言之,用Qt编写的同一个可执行文件在一台Fedora 16 PC上输出彩色PDF,但在另一台Fedora 18上输出灰度PDF。有什么环境变量会影响QPen的颜色设置吗?

示例程序如下:

#include <QPrinter>
#include <QApplication>
#include <QPainter>
int main(int argc, char *argv[]) {
  QApplication app(argc, argv, false);
  QPrinter printer(QPrinter::ScreenResolution);
  printer.setOutputFormat(QPrinter::PdfFormat);
  printer.setOutputFileName("test.pdf");
  printer.setPaperSize(QPrinter::A4);  // default A4
  QPainter painter;
  if(!painter.begin(&printer)) return 3;
  QPen pen;
  pen.setColor(Qt::red);
  painter.setPen(pen);
  painter.drawRect(100, 100, 50, 50);
  painter.end();
  return 0;
}

在Fedora 16上,它用红线画一个矩形。然而,在另一个Fedora 18上,矩形是灰色的!

  • Fedora 16使用qt-4.8.4-14.fc17.x86_64
  • Fedora 18使用qt-4.8.4-17.fc18.i686

我甚至尝试将F18上生成的可执行文件复制到F16上,它成功地绘制了一个红色矩形。

我能弄清楚的唯一原因是有一个神奇的环境变量改变了Qt的默认行为,但是我不知道它是哪个变量。

这可能是由于各自系统的默认打印机的设置(我的猜测)。如果你想强制它上色,使用QPrinter::setColorMode.