1

我有一个字符串,我在程序的各个点都需要它。我知道 Qt 可以管理图像资源,但我需要几个字符串的类似功能。目前我正在使用一个字符串资源类,这是一个草率的解决方案

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++ 程序员)如何管理他们的字符串资源?

4

1 回答 1

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);
}
于 2012-06-30T09:32:06.943 回答