不继承QObject也可以使用tr函数

一个类如果不继承QObject是不能直接使用tr函数,有什么方法可以在不继承QObject的情况下又能直接使用tr函数呢?答案是使用Q_DECLARE_TR_FUNCTIONS宏。

使用

  • 在类中用Q_DECLARE_TR_FUNCTIONS宏定义该类。
  • 可以直接使用trtrUtf8静态方法。
    1
    2
    3
    4
    static inline QString tr(const char *sourceText,
    const char *comment = 0);
    static inline QString trUtf8(const char *sourceText,
    const char *comment = 0);

示例

1
2
3
4
5
6
7
8
9
10
class Test
{
Q_DECLARE_TR_FUNCTIONS(Test)
public:
Test()
{
qDebug() << tr("text");
qDebug() << trUtf8("utf8-text");
}
};