Лучшее, что я могу сказать из QStyleSheetStyle :: updateStyleSheetFont , виджет всегда содержит разрешенный шрифт из таблицы стилей. Я ожидаю, что QWidget::font()
вернет разрешенный шрифт, который вы установили, используя таблицу стилей - то есть шрифт, который является объединенным шрифтом приложения, шрифтами любого родительского виджета и шрифтом стилей.
Виджет сначала нужно отполировать, если вы не запрашиваете после того, как события были доставлены (т. е. из цикла событий).
// https://github.com/KubaO/stackoverflown/tree/master/questions/style-font-query-test-45422885
#include
int main(int argc, char ** argv) {
QApplication app{argc, argv};
QLabel label("Test");
auto font1 = label.font();
label.setStyleSheet("font-size: 49pt;");
label.show();
label.ensurePolished();
auto font2 = label.font();
Q_ASSERT(font1.pointSize() != 49);
Q_ASSERT(font2.pointSize() == 49);
Q_ASSERT(font1.family() == font2.family());
}
Вы могли создать свойство строки, которое делает перевод в Ваше timeField поле и помещает атрибут сериализации на тот вместо этого реальное свойство DateTime, которое использует остальная часть приложения.
Помещенный [XmlIgnore] на свойство Time.
Затем добавьте новое свойство:
[XmlElement(DataType="string",ElementName="Time")]
public String TimeString
{
get { return this.timeField.ToString("yyyy-MM-dd"); }
set { this.timeField = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); }
}