我可以更改 QDate::QString() 的默认格式吗?

Can I change default formatting for QDate::QString()?

QT 的 QDate::toString() 函数,不带参数,将 QDate 转换为默认格式为 "ddd MMM d yyyy" 的 QString。我们的应用程序是国际性的,这种固定格式不反映语言环境和区域设置。我不想使用 LongFormat,因为它需要太多 space;默认的无参数是一个更优化的长度。我已经从系统 QLocale 获得了 LongFormat 按摩格式字符串给我们一个类似于默认格式但也反映国际设置的 QString。

有什么方法可以告诉 QT 在调用 toString() 时使用我的新格式字符串,这样我就不必查找所有现有的 toString() 调用并将格式字符串作为参数插入?

根据 Qt documentation of QDate, you can specify the format you desire in QDate::toString().

现在,为了避免困扰您的重复,您可以在某处指定一个包含应用程序格式的 static 变量。然后每次调用 QDate::toString() 时都将其作为参数提供。这样,您将不得不始终使用相同的 variable/format.


但是如果你真的不想给任何参数,解决方案是继承QDate并通过将默认格式更改为你想要的格式来重新定义toString()方法。

例如:

.h:

class MyDate final : public QDate
{
    private:
        static QString my_format;

    public:
        MyDate();
        MyDate(int y, int m, int d);
        MyDate(const QDate & date);

        QString toFormattedString() const;
};

.cpp:

QString MyDate::my_format = "yyyy - MMMM dddd dd"; // Specify the format you desire.

MyDate::MyDate() : QDate()
{}
MyDate::MyDate(int y, int m, int d) : QDate(y, m, d)
{}
MyDate::MyDate(const QDate & date) : QDate(date)
{}
QString MyDate::toFormattedString() const
{
    return toString(my_format);
}

你可以按如下方式(示例):

MyDate md(QDate::currentDate());
qDebug() << md.toFormattedString();

这里我把方法命名为toFormattedString()是为了让代码更容易理解。随意根据需要进行调整。

希望对您有所帮助。