Qt问题记录

本文详细介绍了如何解决在使用Qt版本4.4.0和G++版本4.3.1时遇到的编译错误问题。通过手动修改源代码,特别是针对qdrawhelper.cpp文件和qapplication_p.h文件,可以有效解决此类错误。

本人Qt的版本4.4.0.是Open SUSE 11.0 DVD i386集成自带的开发环境。 G++版本是4.3.1。


Q1: make中出现

../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_p.h:1394: 错误:显式特例化不能有存储类型
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_p.h:1400: 错误:显式特例化不能有存储类型
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_p.h:1429: 错误:显式特例化不能有存储类型
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_p.h:1436: 错误:显式特例化不能有存储类型


这个原因是因为G++编译器的问题,版本太高。可以根据错误提示手动修改源代码把 static 去掉。


解下来编译中qdrawhelper.cpp可能也会出现如上情况,解决方案依旧。

 

Q2:make出现

../../include/QtGui/private/../../../src/gui/kernel/qapplication_p.h:347: error: multiple parameters named 'screen' 

 

更改qapplication_p.h并找到相应的位置,将源代码的screen改为screen_t

  #vi src/gui/kernel/qapplication_p.h 

  #void setScreenTransformation(QScreen *screen, int screen_t, int transformation);



 

Qt中,日志记录有不同的实现方法和使用要点。 ### 使用Log4Qt进行日志记录 使用Log4Qt进行日志记录时,首先要配置Log4Qt,接着获取根Logger对象,之后可使用其`debug()`、`info()`、`warn()`、`error()`和`fatal()`方法记录不同级别的日志信息。使用时需注意,要确保Qt的版本与Log4Qt的版本兼容,配置日志时需遵循Log4Qt的配置语法规则,且配置文件要位于正确的位置。同时,记录日志时要注意日志级别的选择,防止产生过多日志信息影响性能[^1]。 ### 将Qt内置日志输出到指定文件 在Qt Creator中,若要将`QDebug`、`QInfo`、`QWarning`、`QCritical`和`QFatal`打印的日志输出到指定文件,需要设置Qt的消息处理机制。通常要安装一个自定义的消息处理器,该处理器会将日志消息重定向到文件,可先创建一个自定义消息处理器类[^2]。 以下是一个简单示例代码,展示了使用自定义消息处理器将日志输出到文件: ```cpp #include <QCoreApplication> #include <QDebug> #include <QFile> #include <QTextStream> void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QFile file("log.txt"); if (file.open(QIODevice::Append | QIODevice::Text)) { QTextStream stream(&file); switch (type) { case QtDebugMsg: stream << "Debug: "; break; case QtInfoMsg: stream << "Info: "; break; case QtWarningMsg: stream << "Warning: "; break; case QtCriticalMsg: stream << "Critical: "; break; case QtFatalMsg: stream << "Fatal: "; break; } stream << msg << "\n"; file.close(); } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qInstallMessageHandler(myMessageHandler); qDebug() << "This is a debug message"; qInfo() << "This is an info message"; return a.exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值