我可以更改qdate :: qString()的默认格式吗?



qt的qdate :: toString((函数,无参数,将qdate转换为QString,ddd mmm d yyyy的默认格式。我们的应用程序是国际性的,这种固定格式并不反映区域和区域环境。我不想使用longformat,因为它需要太多空间。默认的NO-参数是更优化的长度。我已经从系统qlocale获得了格式字符串的longformat,从而为我们提供了类似于默认格式的QString,但也反映了国际设置。

有什么方法可以告诉QT,每当调用ToString((时,我可以使用我的新格式字符串,以便我不必找到所有现有的toString((调用并将格式字符串插入参数?

根据QDate的QT文档,您可以在QDate::toString()中指定您想要的格式。

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


但是,如果您真的不想提供任何参数,则解决方案是通过通过您想要的一个将默认格式更改为子类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(),以使代码更易于理解。随意根据需要调整它。

我希望它会有所帮助。

最新更新