applicationManager
QXmppLogger クラス オブジェクトによってそれを消費するメッセージをログに記録することを想定している一方で、情報メッセージまたはエラーが発生したときにシグナルを発するクラスがあります。のようなメソッドを取得し、内部 QXmppLoggerのシグナルinfo()
をwarning()
発するQXmppLoggable クラスがあります。logmessage()
したがって、シグナルを発行するために、QObject自体を継承するQXmppLogableクラスを継承したため、発行されたSIGNAL()をinfo()およびwarning()メソッドで使用および接続して、QXmppLoggerオブジェクトのSLOT(info()
)に接続できます。コード スニペットは次のとおりです。warning()
logmessage()
log()
ヘッダ"imApplicationManager.h"
class applicationManagement: public QXmppLoggable
{
//Q_OBJECT
public:
bool createDataBaseConnection();
applicationManagement();
~applicationManagement();
void setLogger(QXmppLogger *logger);
private:
QXmppLogger *logger;
};
および関連"imApplicationManager.cpp"
applicationManagement::applicationManagement()
{
QObject::connect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
logger, SLOT(log(QXmppLogger::MessageType,QString)));
}
applicationManagement::~applicationManagement()
{
// db..closing
}
bool applicationManagement::createDataBaseConnection(){
//...database conncetion...
if (!dataBase.open()){
warning(QString("Cannot open database %1").arg(dataBase.lastError().text()));
qDebug()<< "Cannot open database " << dataBase.lastError();
return false;
}
info(QString("Database succeeded!"));
return true;
}
void applicationManagement::setLogger(QXmppLogger *logger)
{
if(this->logger != logger)
this->logger = logger;
}
の中にmain.cpp
#include "imApplicationManager"
#incLude "QXmppLogger"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
applicationManagement aa;
QXmppLogger log;
aa.setLogger(&log);
return a.exec();
}
コンパイルではエラーは通知されませんが、起動するとシグメンテーション エラーが発生します。どうすれば修正できますか?