我的程序中的各个点都需要一个字符串。我知道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 ++程序员)如何管理他们的字符串资源?
答案 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);
}