“Ask me for anything but time,” said Napoleon. Time is something that all projects and all applications need to deal with: to make application UIs look fluid, there’s a time budget for every frame, handling data must be done in a deadline, and so forth. It’s also one of the two sources of events in an event-loop-based application (the other being socket/file descriptor notifications), so it’s used very often. Qt offers a number of classes for dealing with time, ranging from obtaining the system time and dealing with timezones, to measuring time intervals, calculating deadlines, to scheduling futere events. It’s a very powerful API and very extensive, grown over time, which means there are often doubts about how to do things right. In order not to waste time to measure time, it’s important to know how to use the right tool for the right job. This session will go over all the classes related to timekeeping offered by Qt. It will explain what each one is meant to be used for and how to use them efficiently. It will spend time talking about the event loop in Qt, the dos and don’ts of timing in a GUI application and how threading can help. It will also give a preview of new API coming in Qt 5.8, which should include compatibility with C++11’s std::chrono functionality. The presenter is QtCore and QtDBus’s maintainer and is an IoT system architect for the Open Source Technology Center at Intel. He’s been working on the internals of QtCore and trying to optimise it to make things as small and as efficient as possible, such as the upcoming “Short Datetime Optimisation”.