标准格式的QT main函数代码,值得借鉴

Posted 欢乐的企鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标准格式的QT main函数代码,值得借鉴相关的知识,希望对你有一定的参考价值。

标准格式的QT main函数代码,值得借鉴

#include <QCoreApplication>
#include <QFile>
#include <QStringList>
#include <QTextStream>
#include <QXmlStreamReader>

/*
 This class exists for the sole purpose of creating a translation context.
*/
class XmlStreamLint

public:
    Q_DECLARE_TR_FUNCTIONS(XmlStreamLint)
;

int main(int argc, char *argv[])

	//使用枚举来定义程序退出值,提高程序的可阅读性
    enum ExitCode
    
        Success,
        ParseFailure,
        ArgumentError,
        WriteError,
        FileFailure
    ;

    QCoreApplication app(argc, argv);

    QTextStream errorStream(stderr);
	
	//提高程序的容错能力
    if (argc != 2)
    
        errorStream << XmlStreamLint::tr(
                       "Usage: xmlstreamlint <path to XML file>\\n");
        return ArgumentError;
    

    QString inputFilePath(QCoreApplication::arguments().at(1));
    QFile inputFile(inputFilePath);

    if (!QFile::exists(inputFilePath))
    
        errorStream << XmlStreamLint::tr(
                       "File %1 does not exist.\\n").arg(inputFilePath);
        return FileFailure;
     else if (!inputFile.open(QIODevice::ReadOnly)) 
        errorStream << XmlStreamLint::tr(
                       "Failed to open file %1.\\n").arg(inputFilePath);
        return FileFailure;
    

    QFile outputFile;
    if (!outputFile.open(stdout, QIODevice::WriteOnly))
    
        errorStream << XmlStreamLint::tr("Failed to open stdout.");
        return WriteError;
    

    QXmlStreamReader reader(&inputFile);
    QXmlStreamWriter writer(&outputFile);
    while (!reader.atEnd())
    
        reader.readNext();//合理的空行,让代码看起来更舒适

        if (reader.error())
        
            errorStream << XmlStreamLint::tr(
                           "Error: %1 in file %2 at line %3, column %4.\\n").arg(
                               reader.errorString(), inputFilePath,
                               QString::number(reader.lineNumber()),
                               QString::number(reader.columnNumber()));
            return ParseFailure;
         else
            writer.writeCurrentToken(reader);
    
    return Success;


以上是关于标准格式的QT main函数代码,值得借鉴的主要内容,如果未能解决你的问题,请参考以下文章

值得借鉴的代码编写规范

Qt在多线程中使用信号槽的示例

设计专用色系,挺不错的值得借鉴

Qt - 引用项目的 main() 函数覆盖实际项目的 main()

未调用 Qt 信号槽

QT中table view怎么显示sqlite数据库的内容?