【发布时间】:2017-11-20 19:41:51
【问题描述】:
关于QString 可以做什么的信息在广泛的Qt 文档中广泛传播。但是由于信息溢出,我不确定什么时候应该使用最好的工具。
对于一个来自表单的简单报告生成器,我现在有了这段代码,主要依靠tr 和arg 为最终的QString 创建QMessageBox:
void Dialog::analyseDialog() {
QString str{};
if( ui.lineEdit->text().isEmpty()) {
str += tr("Name: keine Angaben\n");
} else {
str += tr("Name: %1\n").arg(ui.lineEdit->text());
}
if( ui.spinBox->cleanText().isEmpty()) {
str += tr("Geburtsdatum: keine Angaben\n");
} else {
str += tr("Geburtsdatum: %1\n").arg(ui.spinBox->cleanText());
}
if( ui.radioButton->isChecked()) {
str += tr("Geschlecht: weiblich\n");
} else {
str += tr("Geschlecht: männlich\n");
}
QMessageBox::information(0, tr("Die Auswertung"), str);
}
但我不确定这是否正确使用:
- 如果我不希望本地化,使用
tr()是否合适? - 还是应该改用
QString{...}-c'tor? -
+=(或.append)对 Qt 有效吗?它应该在内部使用QStringBuffer。有时...错误...什么? - 或者有更好的方法吗?
【问题讨论】:
-
1) 我会为每个可翻译的字符串使用
tr(即使你现在不打算翻译它)。对于显示给用户的几乎每个字符串都是如此,但对于查询字符串等技术字符串则不然。 2)我不太关心效率,因为每种方法几乎总是足够快。 Qt 分配额外的空间以避免频繁的重新分配。结论:你的方法对我来说似乎是正确的。
标签: qt string-concatenation qstring