- // start with the most general format and then specialize
- fmt.merge(cachedFormat(key & Q_UINT64_C(0x00000000fffffff0))); // basic subelement format
- fmt.merge(cachedFormat(key & Q_UINT64_C(0x00000000ffffffff))); // subelement + msgtype
- fmt.merge(cachedFormat(key & Q_UINT64_C(0xffff0000fffffff0))); // subelement + nickhash
- fmt.merge(cachedFormat(key & Q_UINT64_C(0xffff0000ffffffff))); // subelement + nickhash + msgtype
- fmt.merge(cachedFormat(key & Q_UINT64_C(0x0000fffffffffff0))); // label + subelement
- fmt.merge(cachedFormat(key & Q_UINT64_C(0x0000ffffffffffff))); // label + subelement + msgtype
- fmt.merge(cachedFormat(key & Q_UINT64_C(0xfffffffffffffff0))); // label + subelement + nickhash
- fmt.merge(cachedFormat(key & Q_UINT64_C(0xffffffffffffffff))); // label + subelement + nickhash + msgtype
+ if(_metricsCache.contains(key))
+ return _metricsCache.value(key);
+
+ return (_metricsCache[key] = new QFontMetricsF(format(ftype, label).font()));