在Qt中管理字符串资源

时间:2012-06-29 18:04:24

标签: qt

我的程序中的各个点都需要一个字符串。我知道Qt可以管理图像资源,但我需要几个字符串的类似功能。目前我正在使用字符串资源类,它是sloppy solution

class StringRes {
public:
    static const QString& appName() { return _appName; }
    static const QString& appVersion() { return _appVersion; }
private:
    static const QString _appName;
    static const QString _appVersion;
};

此外,此解决方案会在我的代码中的某个位置导致段错误。

_fileStream << QString("This is ")
               + StringRes::appName()
               + " "
               + StringRes::appVersion()
               + " reporting for duty.\n";

Qt程序员(或一般的C ++程序员)如何管理他们的字符串资源?

1 个答案:

答案 0 :(得分:2)

要存储应用程序的名称和版本以及组织的名称和域,您可以使用QCoreApplications的属性applicationName,applicationVersion,organizationDomain和organizationName。

我通常在main()函数中设置它们:

#include <QApplication>
#include "MainWindow.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // These functions are member of QCoreApplication, QApplication's
    // parent class:
    app.setApplicationName("My Application");
    app.setApplicationVersion("3.5.2");
    app.setOrganizationName("My Company, or just My Name");
    app.setOrganizationDomain("http://example.com/");

    MainWindow window;
    window.show();

    return app.exec();
}

我可以用它们来展示一个很好的消息:

#include "MainWindow.h"
#include <QCoreApplication>

...

// Slot called when ? -> About menu is clicked.
void MainWindow::on_aboutAction_triggered()
{
    QString message = tr("<strong>%1</strong> %2<br />"
                         "Developed by %3")
            .arg(QCoreApplication::applicationName())
            .arg(QCoreApplication::applicationVersion())
            .arg(QString("<a href=\"%1\">%2</a>")
                .arg(QCoreApplication::organizationDomain())
                .arg(QCoreApplication::organizationName()))
            ;

    QMessageBox::about(this, tr("About"), message);
}