Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用Qt编写的可执行文件在Fedora16和18上的行为不同_C++_Qt_Environment - Fatal编程技术网

C++ 用Qt编写的可执行文件在Fedora16和18上的行为不同

C++ 用Qt编写的可执行文件在Fedora16和18上的行为不同,c++,qt,environment,C++,Qt,Environment,简而言之,用Qt编写的同一个可执行文件在一台Fedora 16 PC上写出彩色PDF,但在另一台Fedora 18 PC上写出灰度PDF。是否有任何环境变量会影响QPen的颜色设置 示例程序如下所示: #include <QPrinter> #include <QApplication> #include <QPainter> int main(int argc, char *argv[]) { QApplication app(argc, argv,

简而言之,用Qt编写的同一个可执行文件在一台Fedora 16 PC上写出彩色PDF,但在另一台Fedora 18 PC上写出灰度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;
}
#包括
#包括
#包括
int main(int argc,char*argv[]){
QApplication应用程序(argc、argv、false);
QPrinter打印机(QPrinter::屏幕分辨率);
打印机.setOutputFormat(QPrinter::PdfFormat);
打印机.setOutputFileName(“test.pdf”);
printer.setPaperSize(QPrinter::A4);//默认A4
油漆工;
如果(!painter.begin(&printer))返回3;
QPen笔;
钢笔颜色(Qt::红色);
画师:画笔;
drawRect(100,100,50,50);
结束();
返回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的默认行为。但是,我不知道它是哪个变量。

这可能是由于相应系统的默认打印机设置(我猜)。如果您想强制它上色,请使用。

太棒了!这确实是原因。一旦我将默认打印机从灰度激光打印机更改为PDFWriter,颜色就会恢复。因此,确保它的最佳和最安全的方法是显式地将ColorMode设置为QPrinter::Color。谢谢你的帮助!