# User Interface Design The main pattern for UI design in QGC is a UI page written in QML, many times communicating with a custom "Controller" written in C++. This follows a somewhat hacked variant of the MVC design pattern. The QML code binds to information associated with the system through the following mechanisms: - The custom controller - The global `QGroundControl` object which provides access to things like the active Vehicle - The FactSystem which provides access to parameters and in some cases custom Facts. Note: Due to the complexity of the QML used in QGC as well as it's reliance on communication with C++ objects to drive the ui it is not possible to use the QML Designer provided by Qt to edit QML.