diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -16,6 +16,7 @@
 -- along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 {-# OPTIONS_GHC -W -fwarn-incomplete-patterns -fwarn-unused-do-bind #-}
+{-# LANGUAGE CPP, RankNTypes #-}
 
 import Control.Monad (unless, when)
 import Distribution.PackageDescription (PackageDescription)
@@ -25,30 +26,41 @@
   absoluteInstallDirs,
   bindir,
   pkgDescrFile,
-  )
-import Distribution.Simple.Program (runProgram)
-import Distribution.Simple.Program.Types (
-  ProgramLocation (FoundOnSystem),
-  simpleConfiguredProgram,
+  withPrograms,
   )
+import Distribution.Simple.Program (Program, runDbProgram, simpleProgram)
 import Distribution.Simple.Setup (
+  ConfigFlags,
   CleanFlags,
   CopyDest (CopyTo, NoCopyDest),
   cleanVerbosity,
+  configVerbosity,
   copyDest,
+#if MIN_VERSION_Cabal(2,0,0)
+  copyVerbosity,
+#endif
   flagToMaybe,
   fromFlagOrDefault,
   installDistPref,
+#if MIN_VERSION_Cabal(2,0,0)
+  installVerbosity,
+#endif
   )
 import Distribution.Simple.UserHooks (
   UserHooks (
     cleanHook,
     copyHook,
+    hookedPrograms,
     instHook,
     postConf
     ),
   )
-import Distribution.Simple.Utils (die, info, installExecutableFile)
+#if MIN_VERSION_Cabal(2,0,0)
+import Distribution.Simple.Utils (die')
+#else
+import Distribution.Simple.Utils (die)
+#endif
+import Distribution.Simple.Utils (info, installExecutableFile)
 import Distribution.Verbosity (normal, verbose)
 import System.Directory (
   createDirectoryIfMissing,
@@ -62,46 +74,75 @@
   )
 import System.FilePath ((</>), joinPath, takeDirectory)
 
+type DieFn = forall a. String -> IO a
+
 main :: IO ()
 main = defaultMainWithHooks qtahHooks
 
 qtahHooks :: UserHooks
 qtahHooks = simpleUserHooks
-  { postConf = \_ _ _ lbi -> generateSources lbi
+  { hookedPrograms = [bashProgram]
+  , postConf = \_ cf _ lbi -> generateSources cf lbi
   , copyHook = \pd lbi uh cf -> do let dest = fromFlagOrDefault NoCopyDest $ copyDest cf
                                    doInstall pd lbi dest
+#if MIN_VERSION_Cabal(2,0,0)
+                                     (die' $ fromFlagOrDefault normal $ copyVerbosity cf)
+#else
+                                     die
+#endif
+
                                    copyHook simpleUserHooks pd lbi uh cf
   , instHook = \pd lbi uh if' -> do let dest = maybe NoCopyDest CopyTo $
                                                flagToMaybe $ installDistPref if'
                                     doInstall pd lbi dest
+#if MIN_VERSION_Cabal(2,0,0)
+                                      (die' $ fromFlagOrDefault normal $ installVerbosity if')
+#else
+                                      die
+#endif
                                     instHook simpleUserHooks pd lbi uh if'
   , cleanHook = \pd z uh cf -> do doClean cf
                                   cleanHook simpleUserHooks pd z uh cf
   }
 
-findProjectRootDir :: LocalBuildInfo -> IO FilePath
-findProjectRootDir localBuildInfo = case pkgDescrFile localBuildInfo of
+bashProgram :: Program
+bashProgram = simpleProgram "bash"
+
+findProjectRootDir :: LocalBuildInfo -> DieFn -> IO FilePath
+findProjectRootDir localBuildInfo dieFn = case pkgDescrFile localBuildInfo of
   Just path -> return $ takeDirectory path
-  Nothing -> die "Couldn't find the project root path."
+  Nothing -> dieFn "Couldn't find the project root path."
 
-generateSources :: LocalBuildInfo -> IO ()
-generateSources localBuildInfo = do
+generateSources :: ConfigFlags -> LocalBuildInfo -> IO ()
+generateSources configFlags localBuildInfo = do
   -- Generate binding sources for the generated C++ listener classes.
-  projectRootDir <- findProjectRootDir localBuildInfo
+  let verbosity = fromFlagOrDefault normal $ configVerbosity configFlags
+
+  projectRootDir <-
+    findProjectRootDir
+    localBuildInfo
+#if MIN_VERSION_Cabal(2,0,0)
+    (die' verbosity)
+#else
+    die
+#endif
+
   let genPath = projectRootDir </> "qtah-listener-gen"
-      program = simpleConfiguredProgram "qtah-listener-gen" $ FoundOnSystem genPath
+      programDb = withPrograms localBuildInfo
 
   -- Cabal 1.24 (GHC 8?) seems to remove the executable bit from
   -- qtah-listener-gen before configuring, so we have to re-add it.
+  --
+  -- See: https://github.com/haskell/cabal/issues/4170
   perms <- getPermissions genPath
   unless (executable perms) $
     setPermissions genPath $ setOwnerExecutable True perms
 
-  runProgram normal program ["--gen-hs-dir", "."]
+  runDbProgram verbosity bashProgram programDb [genPath, "--gen-hs-dir", "."]
 
-doInstall :: PackageDescription -> LocalBuildInfo -> CopyDest -> IO ()
-doInstall packageDesc localBuildInfo copyDest = do
-  projectRootDir <- findProjectRootDir localBuildInfo
+doInstall :: PackageDescription -> LocalBuildInfo -> CopyDest -> DieFn -> IO ()
+doInstall packageDesc localBuildInfo copyDest dieFn = do
+  projectRootDir <- findProjectRootDir localBuildInfo dieFn
   let binDir = bindir $ absoluteInstallDirs packageDesc localBuildInfo copyDest
   createDirectoryIfMissing True binDir
   installExecutableFile verbose
diff --git a/qtah-generator.cabal b/qtah-generator.cabal
--- a/qtah-generator.cabal
+++ b/qtah-generator.cabal
@@ -1,5 +1,5 @@
 name: qtah-generator
-version: 0.4.0
+version: 0.5.0
 synopsis: Generator for Qtah Qt bindings
 homepage: http://khumba.net/projects/qtah
 license: LGPL-3
@@ -41,8 +41,8 @@
     , containers >=0.5 && <0.6
     , directory >=1.2 && <1.4
     , filepath >=1.3 && <1.5
-    , hoppy-generator >=0.4 && <0.5
-    , hoppy-std >=0.4 && <0.5
+    , hoppy-generator >=0.5 && <0.6
+    , hoppy-std >=0.5 && <0.6
     , haskell-src >=1.0 && <1.1
     , mtl >=2.1 && <2.3
     , process >=1.2 && <1.7
@@ -60,6 +60,7 @@
     , Graphics.UI.Qtah.Generator.Interface.Core.QChar
     , Graphics.UI.Qtah.Generator.Interface.Core.QChildEvent
     , Graphics.UI.Qtah.Generator.Interface.Core.QCoreApplication
+    , Graphics.UI.Qtah.Generator.Interface.Core.QDate
     , Graphics.UI.Qtah.Generator.Interface.Core.QDir
     , Graphics.UI.Qtah.Generator.Interface.Core.QEvent
     , Graphics.UI.Qtah.Generator.Interface.Core.QItemSelection
@@ -75,6 +76,7 @@
     , Graphics.UI.Qtah.Generator.Interface.Core.QPointF
     , Graphics.UI.Qtah.Generator.Interface.Core.QRect
     , Graphics.UI.Qtah.Generator.Interface.Core.QRectF
+    , Graphics.UI.Qtah.Generator.Interface.Core.QSettings
     , Graphics.UI.Qtah.Generator.Interface.Core.QSize
     , Graphics.UI.Qtah.Generator.Interface.Core.QSizeF
     , Graphics.UI.Qtah.Generator.Interface.Core.QString
@@ -85,6 +87,7 @@
     , Graphics.UI.Qtah.Generator.Interface.Core.QTimerEvent
     , Graphics.UI.Qtah.Generator.Interface.Core.QVariant
     , Graphics.UI.Qtah.Generator.Interface.Core.QVector
+    , Graphics.UI.Qtah.Generator.Interface.Core.QPalette
     , Graphics.UI.Qtah.Generator.Interface.Core.Types
     , Graphics.UI.Qtah.Generator.Interface.Gui
     , Graphics.UI.Qtah.Generator.Interface.Gui.QActionEvent
@@ -92,6 +95,7 @@
     , Graphics.UI.Qtah.Generator.Interface.Gui.QClipboard
     , Graphics.UI.Qtah.Generator.Interface.Gui.QCloseEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QColor
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QCursor
     , Graphics.UI.Qtah.Generator.Interface.Gui.QDoubleValidator
     , Graphics.UI.Qtah.Generator.Interface.Gui.QEnterEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QExposeEvent
@@ -135,6 +139,7 @@
     , Graphics.UI.Qtah.Generator.Interface.Widgets
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractButton
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractGraphicsShapeItem
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemDelegate
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemView
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractScrollArea
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractSlider
@@ -145,9 +150,12 @@
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QBoxLayout
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QButtonGroup
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QCheckBox
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QDateEdit
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QDateTimeEdit
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QDial
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QDialog
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QDialogButtonBox
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QDockWidget
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QDoubleSpinBox
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QFileDialog
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QFormLayout
@@ -189,10 +197,13 @@
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QStackedLayout
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QStackedWidget
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QStatusBar
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QStyledItemDelegate
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QSystemTrayIcon
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QTabWidget
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QTextEdit
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QToolBar
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QToolBox
+    , Graphics.UI.Qtah.Generator.Interface.Widgets.QToolButton
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QTreeView
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QTreeWidget
     , Graphics.UI.Qtah.Generator.Interface.Widgets.QVBoxLayout
diff --git a/qtah-listener-gen b/qtah-listener-gen
--- a/qtah-listener-gen
+++ b/qtah-listener-gen
@@ -77,6 +77,8 @@
 
     # Keep the includes in the C++ section up-to-date with the types used here.
     $fn Bool "bool"
+    $fn DockWidgetArea "Qt::DockWidgetArea"
+    $fn DockWidgetAreas "Qt::DockWidgetAreas"
     $fn Double "double"
     $fn Int "int"
     $fn IntBool "int|bool"
@@ -93,6 +95,8 @@
     $fn PtrQWidgetPtrQWidget "QWidget*|QWidget*"
     $fn QAbstractSliderAction "QAbstractSlider::SliderAction"
     $fn QClipboardMode "QClipboard::Mode"
+    $fn QDate "QDate"
+    $fn QDockWidgetFeatures "QDockWidget::DockWidgetFeatures"
     $fn QModelIndex "QModelIndex"
     $fn QModelIndexIntInt "QModelIndex|int|int"
     $fn QModelIndexIntIntQModelIndexInt "QModelIndex|int|int|QModelIndex|int"
@@ -136,6 +140,7 @@
     sayHpp '#include <QAbstractSlider>'
     sayHpp '#include <QAction>'
     sayHpp '#include <QClipboard>'
+    sayHpp '#include <QDockWidget>'
     sayHpp '#include <QIcon>'
     sayHpp '#include <QItemSelection>'
     sayHpp '#include <QModelIndex>'
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core.hs
@@ -24,6 +24,7 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QChar as QChar
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QChildEvent as QChildEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QCoreApplication as QCoreApplication
+import qualified Graphics.UI.Qtah.Generator.Interface.Core.QDate as QDate
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QDir as QDir
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QEvent as QEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QItemSelection as QItemSelection
@@ -34,11 +35,13 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QMarginsF as QMarginsF
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QModelIndex as QModelIndex
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QObject as QObject
+import qualified Graphics.UI.Qtah.Generator.Interface.Core.QPalette as QPalette
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QPersistentModelIndex as QPersistentModelIndex
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QPoint as QPoint
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QPointF as QPointF
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QRect as QRect
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QRectF as QRectF
+import qualified Graphics.UI.Qtah.Generator.Interface.Core.QSettings as QSettings
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QSize as QSize
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QSizeF as QSizeF
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QString as QString
@@ -64,6 +67,7 @@
     , QChar.aModule
     , QChildEvent.aModule
     , QCoreApplication.aModule
+    , QDate.aModule
     , QDir.aModule
     , QEvent.aModule
     , QItemSelection.aModule
@@ -73,11 +77,13 @@
     , QMarginsF.aModule
     , QModelIndex.aModule
     , QObject.aModule
+    , QPalette.aModule
     , QPersistentModelIndex.aModule
     , QPoint.aModule
     , QPointF.aModule
     , QRect.aModule
     , QRectF.aModule
+    , QSettings.aModule
     , QSize.aModule
     , QSizeF.aModule
     , QString.aModule
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs
@@ -40,6 +40,7 @@
 import Graphics.UI.Qtah.Generator.Flags (qtVersion)
 import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent)
 import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
 import Graphics.UI.Qtah.Generator.Interface.Core.QStringList (c_QStringList)
 import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
 import Graphics.UI.Qtah.Generator.Types
@@ -60,15 +61,25 @@
   collect
   [ just $ makeFnMethod (ident2 "qtah" "qcoreapplication" "create") "new" MStatic Nonpure
     [objT c_QStringList] $ ptrT $ objT c_QCoreApplication
+  , just $ mkStaticMethod "applicationName" [] $ objT c_QString
+  , just $ mkStaticMethod "applicationVersion" [] $ objT c_QString
   , test (qtVersion >= [4, 1]) $ mkStaticMethod "arguments" [] $ objT c_QStringList
   , just $ mkStaticMethod "exec" [] voidT
   , just $ mkStaticMethod "exit" [intT] voidT
   , just $ mkStaticMethod' "instance" "getInstance" [] $ ptrT $ objT c_QCoreApplication
+  , test (qtVersion >= [5, 0]) $ mkStaticMethod "isQuitLockEnabled" [] boolT
+  , just $ mkStaticMethod "organizationDomain" [] $ objT c_QString
+  , just $ mkStaticMethod "organizationName" [] $ objT c_QString
   , test (qtVersion >= [4, 3]) $ mkStaticMethod' "postEvent" "postEvent"
     [ptrT $ objT c_QObject, ptrT $ objT c_QEvent] voidT
   , test (qtVersion >= [4, 3]) $ mkStaticMethod' "postEvent" "postEventWithPriority"
     [ptrT $ objT c_QObject, ptrT $ objT c_QEvent, intT] voidT
   , just $ mkStaticMethod "quit" [] voidT
   , just $ mkStaticMethod "sendEvent" [ptrT $ objT c_QObject, ptrT $ objT c_QEvent] boolT
+  , just $ mkStaticMethod "setApplicationName" [objT c_QString] voidT
+  , just $ mkStaticMethod "setApplicationVersion" [objT c_QString] voidT
+  , just $ mkStaticMethod "setOrganizationDomain" [objT c_QString] voidT
+  , just $ mkStaticMethod "setOrganizationName" [objT c_QString] voidT
+  , test (qtVersion >= [5, 0]) $ mkStaticMethod "setQuitLockEnabled" [boolT] voidT
     -- TODO Other methods.
   ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs
@@ -0,0 +1,108 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Core.QDate (
+  aModule,
+  c_QDate,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportClass),
+  addReqIncludes,
+  classSetConversionToGc,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkConstMethod',
+  mkCtor,
+  mkMethod,
+  mkStaticMethod,
+  mkStaticMethod',
+  )
+import Foreign.Hoppy.Generator.Spec.ClassFeature (
+  ClassFeature (Assignable, Copyable, Equatable),
+  classAddFeatures,
+  )
+import Foreign.Hoppy.Generator.Types (
+  boolT, intT, int64T, objT,
+  )
+import Foreign.Hoppy.Generator.Version (collect, just, test)
+import Graphics.UI.Qtah.Generator.Flags (qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Core", "QDate"]
+  [ QtExport $ ExportClass c_QDate
+  ]
+
+c_QDate =
+  addReqIncludes [includeStd "QDate"] $
+  classSetConversionToGc $
+  classAddFeatures [Assignable, Copyable, Equatable] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDate") Nothing [] $
+  collect
+  [
+  -- Public Functions
+    just $ mkCtor "new" []
+  , just $ mkCtor "newWithYmd" [intT, intT, intT]
+  , just $ mkConstMethod "addDays" [int64T] (objT c_QDate)
+  , just $ mkConstMethod "addMonths" [intT] (objT c_QDate)
+  , just $ mkConstMethod "addYears" [intT] (objT c_QDate)
+  , just $ mkConstMethod "day" [] intT
+  , just $ mkConstMethod "dayOfWeek" [] intT
+  , just $ mkConstMethod "dayOfYear" [] intT
+  , just $ mkConstMethod "daysInMonth" [] intT
+  , just $ mkConstMethod "daysInYear" [] intT
+  , just $ mkConstMethod "daysTo" [objT c_QDate] int64T
+  -- TODO test (qtVersion >= [4, 5]) $ mkConstMethod "getDate"
+  --      (intT *year, intT *month, intT *day) voidT
+  , just $ mkConstMethod "isNull" [] boolT
+  , just $ mkConstMethod "isValid" [] boolT
+  , just $ mkConstMethod "month" [] intT
+  , test (qtVersion >= [4, 2]) $ mkMethod "setDate" [intT, intT, intT] boolT
+  , just $ mkConstMethod "toJulianDay" [] int64T
+  , just $ mkConstMethod'
+      "toString" "toStringWithStringFormat" [objT c_QString] (objT c_QString)
+  , just $ mkConstMethod "toString" [] (objT c_QString)
+  -- TODO just $ mkConstMethod' "toString" "toStringWithDateFormat"
+  --      [DateFormat] (objT c_QString)
+  -- TODO just $ mkConstMethod' "toString" "toStringWithStringViewFormat"
+  --      [objT c_QStringView] (objT c_QString)
+  , just $ mkConstMethod "weekNumber" [] intT
+  -- TODO just $ mkConstMethod' "weekNumber" "weekNumberWithYearNumber"
+  --      (intT *yearNumber = Q_NULLPTR) intT
+  , just $ mkConstMethod "year" [] intT
+
+  -- Static Public Members
+  , just $ mkStaticMethod "currentDate" [] (objT c_QDate)
+  , just $ mkStaticMethod "fromJulianDay" [int64T] (objT c_QDate)
+  , just $ mkStaticMethod "fromString" [objT c_QString] (objT c_QDate)
+  -- TODO just $ mkStaticMethod' "fromString" "fromStringWithDateFormat"
+  --      [objT c_QString, Qt::DateFormat] (objT c_QDate)
+  , just $ mkStaticMethod' "fromString" "fromStringWithStringFormat"
+    [objT c_QString, objT c_QString] (objT c_QDate)
+  , just $ mkStaticMethod "isLeapYear" [intT] boolT
+  , just $ mkStaticMethod' "isValid" "isValidYmd" [intT, intT, intT] boolT
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs
@@ -0,0 +1,59 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2015-2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+-- | Top-level bindings and bindings in the @Qt::@ namespace.
+module Graphics.UI.Qtah.Generator.Interface.Core.QPalette (
+  aModule,
+  e_ColorRole
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (Export (ExportEnum), Include, ident1, includeStd)
+import Foreign.Hoppy.Generator.Version (collect, just)
+import Graphics.UI.Qtah.Generator.Module (AModule(AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+qPaletteInclude :: [Include]
+qPaletteInclude = [includeStd "Qt", includeStd "QPalette"]
+
+aModule :: AModule
+aModule = AQtModule $ makeQtModule ["Core", "QPalette"] exports
+
+exports :: [QtExport]
+exports =
+  QtExportSpecials :
+  (map QtExport . collect)
+  [ just $ ExportEnum e_ColorRole
+  ]
+
+-- TODO QPalette
+
+e_ColorRole =
+  makeQtEnum (ident1 "QPalette" "ColorRole") qPaletteInclude
+  [ (10, ["window"])
+  , (0,  ["window", "text"])
+  , (9,  ["base"])
+  , (16, ["alternate", "base"])
+  , (18, ["tool", "tip", "base"])
+  , (19, ["tool", "tip", "text"])
+  , (6,  ["text"])
+  , (1,  ["button"])
+  , (8,  ["button", "text"])
+  , (7,  ["bright", "text"])
+  ]
+
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs
@@ -0,0 +1,70 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Core.QSettings (
+  aModule,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Class,
+  Export (ExportClass),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkConstMethod',
+  mkCtor,
+  mkMethod,
+  )
+import Foreign.Hoppy.Generator.Types (objT, ptrT, voidT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Core.QVariant (c_QVariant)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule :: AModule
+aModule =
+  AQtModule $
+  makeQtModule ["Core", "QSettings"]
+  [QtExport $ ExportClass c_QSettings]
+
+c_QSettings :: Class
+c_QSettings =
+  addReqIncludes [includeStd "QSettings"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QSettings") Nothing [c_QObject]
+  [ mkCtor "new" []
+  , mkCtor "newWithOrganization" [objT c_QString]
+  , mkCtor "newWithOrganizationAndApplication" [objT c_QString, objT c_QString]
+  , mkCtor "newWithOrganizationAndApplicationAndParent"
+    [objT c_QString, objT c_QString, ptrT $ objT c_QObject]
+  , mkCtor "newWithParent" [ptrT $ objT c_QObject]
+  -- TODO QSettings(Scope scope, const QString &organization,
+  --      const QString &application = QString(), QObject *parent = Q_NULLPTR)
+  -- TODO QSettings(Format format, Scope scope, const QString &organization,
+  --      const QString &application = QString(), QObject *parent = Q_NULLPTR)
+  -- TODO QSettings(const QString &fileName, Format format, QObject *parent = Q_NULLPTR)
+  , mkMethod "setValue" [objT c_QString, objT c_QVariant] voidT
+  , mkConstMethod "value" [objT c_QString] (objT c_QVariant)
+  , mkConstMethod' "value" "valueWithDefault" [objT c_QString, objT c_QVariant] (objT c_QVariant)
+  -- TODO Other methods.
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs
@@ -54,6 +54,7 @@
   )
 import Foreign.Hoppy.Generator.Version (collect, just, test)
 import Graphics.UI.Qtah.Generator.Flags (qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.QByteArray (c_QByteArray)
 import Graphics.UI.Qtah.Generator.Interface.Core.QChar (c_QChar)
 import {-# SOURCE #-} Graphics.UI.Qtah.Generator.Interface.Core.QList (c_QListQVariant)
 import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
@@ -91,6 +92,7 @@
   collect
   [ just $ mkCtor "new" []
   , just $ mkCtor "newWithBool" [boolT]
+  , just $ mkCtor "newWithByteArray" [objT c_QByteArray]
   , just $ mkCtor "newWithChar" [objT c_QChar]
   , just $ mkCtor "newWithDouble" [doubleT]
   , test (qtVersion >= [4, 6]) $ mkCtor "newWithFloat" [floatT]
@@ -135,6 +137,7 @@
   , just $ mkMethod' "setValue" "setToULongLong" [ullongT] voidT
   , test (qtVersion >= [4, 8]) $ mkMethod' "setValue" "swap" [refT $ objT c_QVariant] voidT
   , just $ mkConstMethod "toBool" [] boolT
+  , just $ mkConstMethod "toByteArray" [] (objT c_QByteArray)
   , just $ mkConstMethod "toChar" [] $ objT c_QChar
   , just $ mkConstMethod "toDouble" [] doubleT
   , test (qtVersion >= [4, 6]) $ mkConstMethod "toFloat" [] floatT
@@ -146,6 +149,7 @@
   , just $ mkConstMethod "toRectF" [] $ objT c_QRectF
   , just $ mkConstMethod "toSize" [] $ objT c_QSize
   , just $ mkConstMethod "toSizeF" [] $ objT c_QSizeF
+  , just $ mkConstMethod "toList" [] $ objT c_QListQVariant
   , just $ mkConstMethod "toStringList" [] $ objT c_QStringList
   , just $ mkConstMethod "toString" [] $ objT c_QString
   , just $ mkConstMethod "toUInt" [] uintT
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs
@@ -22,6 +22,7 @@
   gluint,
   e_AlignmentFlag,
   bs_Alignment,
+  e_ArrowType,
   e_AspectRatioMode,
   e_BrushStyle,
   e_CaseSensitivity,
@@ -29,6 +30,9 @@
   e_ContextMenuPolicy,
   e_Corner,
   e_CursorMoveStyle,
+  e_CursorShape,
+  e_DockWidgetArea,
+  bs_DockWidgetAreas,
   e_DropAction,
   bs_DropActions,
   e_EventPriority,
@@ -47,6 +51,8 @@
   bs_KeyboardModifiers,
   e_LayoutDirection,
   e_MaskMode,
+  e_MatchFlag,
+  bs_MatchFlags,
   e_MouseButton,
   bs_MouseButtons,
   e_MouseEventFlag,
@@ -109,6 +115,7 @@
   (map QtExport . collect)
   [ just $ ExportEnum e_AlignmentFlag
   , just $ ExportBitspace bs_Alignment
+  , just $ ExportEnum e_ArrowType
   , just $ ExportEnum e_AspectRatioMode
   , just $ ExportEnum e_BrushStyle
   , just $ ExportEnum e_CaseSensitivity
@@ -116,6 +123,9 @@
   , just $ ExportEnum e_ContextMenuPolicy
   , just $ ExportEnum e_Corner
   , just $ ExportEnum e_CursorMoveStyle
+  , just $ ExportEnum e_CursorShape
+  , just $ ExportEnum e_DockWidgetArea
+  , just $ ExportBitspace bs_DockWidgetAreas
   , just $ ExportEnum e_DropAction
   , just $ ExportBitspace bs_DropActions
   , just $ ExportEnum e_EventPriority
@@ -134,6 +144,8 @@
   , just $ ExportBitspace bs_KeyboardModifiers
   , just $ ExportEnum e_LayoutDirection
   , just $ ExportEnum e_MaskMode
+  , just $ ExportEnum e_MatchFlag
+  , just $ ExportBitspace bs_MatchFlags
   , just $ ExportEnum e_MouseButton
   , just $ ExportBitspace bs_MouseButtons
   , test (qtVersion >= e_MouseEventFlag_minVersion) $ ExportEnum e_MouseEventFlag
@@ -187,6 +199,15 @@
   , (0x10, ["align", "absolute"])
   ]
 
+e_ArrowType =
+  makeQtEnum (ident1 "Qt" "ArrowType") qtInclude
+  [ (0, ["no", "arrow"])
+  , (1, ["up", "arrow"])
+  , (2, ["down", "arrow"])
+  , (3, ["left", "arrow"])
+  , (4, ["right", "arrow"])
+  ]
+
 e_AspectRatioMode =
   makeQtEnum (ident1 "Qt" "AspectRatioMode") qtInclude
   [ (0, ["ignore", "aspect", "ratio"])
@@ -254,6 +275,43 @@
   , (1, ["visual", "move", "style"])
   ]
 
+e_CursorShape =
+  makeQtEnum (ident1 "Qt" "CursorShape") qtInclude
+  [ (0,  ["arrow", "cursor"])
+  , (1,  ["up", "arrow", "cursor"])
+  , (2,  ["cross", "cursor"])
+  , (3,  ["wait", "cursor"])
+  , (4,  ["i", "beam", "cursor"])
+  , (5,  ["size", "ver", "cursor"])
+  , (6,  ["size", "hor", "cursor"])
+  , (7,  ["size", "b", "diag", "cursor"])
+  , (8,  ["size", "f", "diag", "cursor"])
+  , (9,  ["size", "all", "cursor"])
+  , (10, ["blank", "cursor"])
+  , (11, ["split", "v", "cursor"])
+  , (12, ["split", "h", "cursor"])
+  , (13, ["pointing", "hand", "cursor"])
+  , (14, ["forbidden", "cursor"])
+  , (15, ["whats", "this", "cursor"])
+  , (16, ["busy", "cursor"])
+  , (17, ["open", "hand", "cursor"])
+  , (18, ["closed", "hand", "cursor"])
+  , (19, ["drag", "copy", "cursor"])
+  , (20, ["drag", "move", "cursor"])
+  , (21, ["drag", "link", "cursor"])
+  , (24, ["bitmap", "cursor"])
+  ]
+
+(e_DockWidgetArea, bs_DockWidgetAreas) =
+  makeQtEnumBitspace (ident1 "Qt" "DockWidgetArea") "DockWidgetAreas" qtInclude
+  [ (0x0, ["no", "dock", "widget", "area"])
+  , (0x1, ["left", "dock", "widget", "area"])
+  , (0x2, ["right", "dock", "widget", "area"])
+  , (0x4, ["top", "dock", "widget", "area"])
+  , (0x8, ["bottom", "dock", "widget", "area"])
+  , (0xf, ["all", "dock", "widget", "areas"])
+  ]
+
 (e_DropAction, bs_DropActions) =
   makeQtEnumBitspace (ident1 "Qt" "DropAction") "DropActions" qtInclude
   [ (0x0, ["ignore", "action"])
@@ -569,6 +627,20 @@
   makeQtEnum (ident1 "Qt" "MaskMode") qtInclude
   [ (0, ["mask", "in", "color"])
   , (1, ["mask", "out", "color"])
+  ]
+
+(e_MatchFlag, bs_MatchFlags) =
+  makeQtEnumBitspace (ident1 "Qt" "MatchFlag") "MatchFlags" qtInclude
+  [ ( 0, ["match", "exactly"])
+  , ( 8, ["match", "fixed", "string"])
+  , ( 1, ["match", "contains"])
+  , ( 2, ["match", "starts", "with"])
+  , ( 3, ["match", "ends", "with"])
+  , (16, ["match", "case", "sensitive"])
+  , ( 4, ["match", "reg", "exp"])
+  , ( 5, ["match", "wildcard"])
+  , (32, ["match", "wrap"])
+  , (64, ["match", "recursive"])
   ]
 
 (e_MouseButton, bs_MouseButtons) =
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs
@@ -22,6 +22,7 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QClipboard as QClipboard
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QCloseEvent as QCloseEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QColor as QColor
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QCursor as QCursor
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QDoubleValidator as QDoubleValidator
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QEnterEvent as QEnterEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QExposeEvent as QExposeEvent
@@ -67,6 +68,7 @@
   , QClipboard.aModule
   , QCloseEvent.aModule
   , QColor.aModule
+  , QCursor.aModule
   , QDoubleValidator.aModule
   , QEnterEvent.aModule
   , QExposeEvent.aModule
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs
@@ -0,0 +1,74 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2015-2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Gui.QCursor (
+  aModule,
+  c_QCursor,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportClass),
+  addReqIncludes,
+  classSetConversionToGc,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  mkStaticMethod,
+  mkStaticMethod',
+  )
+import Foreign.Hoppy.Generator.Spec.ClassFeature (
+  ClassFeature (Assignable, Copyable, Equatable),
+  classAddFeatures,
+  )
+import Foreign.Hoppy.Generator.Types (enumT, intT, objT, voidT)
+import Foreign.Hoppy.Generator.Version (collect, just)
+import Graphics.UI.Qtah.Generator.Flags (qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (e_CursorShape)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QCursor"]
+  [ QtExport $ ExportClass c_QCursor ]
+
+c_QCursor =
+  addReqIncludes [includeStd "QCursor"] $
+  classSetConversionToGc $
+  classAddFeatures (if qtVersion >= [5, 11]
+                    then [Assignable, Copyable, Equatable]
+                    else [Assignable, Copyable]) $
+  classSetEntityPrefix "" $
+  makeClass (ident "QCursor") Nothing [] $
+  collect
+  [ just $ mkCtor "new" []
+  , just $ mkCtor "newWithCursorShape" [enumT e_CursorShape]
+    -- TODO Methods.
+
+    -- Static methods.
+  , just $ mkStaticMethod "pos" [] $ objT c_QPoint
+    -- TODO QPoint pos(const QScreen*)
+  , just $ mkStaticMethod "setPos" [objT c_QPoint] voidT
+  , just $ mkStaticMethod' "setPos" "setPosRaw" [intT, intT] voidT
+    -- TODO void setPos(QScreen*, int, int)
+    -- TODO void setPos(QScreen*, const QPoint&)
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs
@@ -29,13 +29,14 @@
   includeStd,
   makeClass,
   mkCtor,
+  mkConstMethod,
   mkMethod,
   )
 import Foreign.Hoppy.Generator.Spec.ClassFeature (
   ClassFeature (Assignable, Copyable, Equatable),
   classAddFeatures,
   )
-import Foreign.Hoppy.Generator.Types (intT, voidT)
+import Foreign.Hoppy.Generator.Types (boolT, intT, voidT)
 import Foreign.Hoppy.Generator.Version (collect, just)
 import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
 import Graphics.UI.Qtah.Generator.Types
@@ -56,8 +57,12 @@
   makeClass (ident "QFont") Nothing [] $
   collect
   [ just $ mkCtor "new" []
+  , just $ mkConstMethod "bold" [] boolT
+  , just $ mkMethod "setBold" [boolT] voidT
   , just $ mkMethod "setPixelSize" [intT] voidT
   , just $ mkMethod "setPointSize" [intT] voidT
+  , just $ mkMethod "setWeight" [intT] voidT
+  , just $ mkConstMethod "weight" [] intT
   ]
 
 -- TODO The rest of QFont.
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs
@@ -31,23 +31,35 @@
   includeStd,
   makeClass,
   mkConstMethod,
+  mkConstMethod',
   mkCtor,
+  mkMethod,
   mkMethod',
   mkProp,
   )
 import Foreign.Hoppy.Generator.Types (
-  bitspaceT, intT, objT, ptrT, voidT,
+  constT, bitspaceT, boolT, enumT, intT, objT, ptrT, voidT,
   )
 import Foreign.Hoppy.Generator.Version (collect, just, test)
 import Graphics.UI.Qtah.Generator.Flags (qtVersion)
 import Graphics.UI.Qtah.Generator.Interface.Core.QAbstractItemModel (
   c_QAbstractItemModel,
   )
+-- import Graphics.UI.Qtah.Generator.Interface.Core.QDataStream (c_QDataStream)
 import Graphics.UI.Qtah.Generator.Interface.Core.QList (
   Contents, c_QList, instantiate,
   )
+import Graphics.UI.Qtah.Generator.Interface.Core.QModelIndex (c_QModelIndex)
+import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Interface.Core.QSize (c_QSize)
 import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
-import Graphics.UI.Qtah.Generator.Interface.Core.Types (bs_Alignment)
+import Graphics.UI.Qtah.Generator.Interface.Core.QStringList (c_QStringList)
+import Graphics.UI.Qtah.Generator.Interface.Core.QVariant (c_QVariant)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (
+  bs_Alignment, bs_ItemFlags, bs_MatchFlags, e_CheckState, e_SortOrder,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Gui.QBrush (c_QBrush)
+import Graphics.UI.Qtah.Generator.Interface.Gui.QFont (c_QFont)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QIcon (c_QIcon)
 import Graphics.UI.Qtah.Generator.Module (
   AModule (AQtModule), makeQtModule, makeQtModuleWithMinVersion,
@@ -84,10 +96,98 @@
   classSetEntityPrefix "" $
   makeClass (ident "QStandardItemModel") Nothing [c_QAbstractItemModel] $
   collect
-  [ test (qtVersion >= [4, 2]) $
+  [
+  -- Properties
+    test (qtVersion >= [4, 2]) $ mkProp "sortRole" intT
+  -- Public Functions
+  , just $ mkCtor "new" []
+  , just $ mkCtor "newWithParent" [ptrT $ objT c_QObject]
+  , just $ mkCtor "newWithRowsAndColumns" [intT, intT]
+  , just $
+    mkCtor "newWithRowsAndColumnsAndParent" [intT, intT, ptrT $ objT c_QObject]
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "appendColumn" [objT c_QListQStandardItem] voidT
+  , test (qtVersion >= [4, 2]) $
     mkMethod' "appendRow" "appendRowItems" [objT c_QListQStandardItem] voidT
   , test (qtVersion >= [4, 2]) $
     mkMethod' "appendRow" "appendRowItem" [ptrT $ objT c_QStandardItem] voidT
+  , just $ mkMethod "clear" [] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkConstMethod "findItems" [objT c_QString] (objT c_QListQStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkConstMethod'
+      "findItems"
+      "findItemsWithFlags"
+      [objT c_QString, bitspaceT bs_MatchFlags]
+      (objT c_QListQStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkConstMethod'
+      "findItems"
+      "findItemsWithFlagsAndColumn"
+      [objT c_QString, bitspaceT bs_MatchFlags, intT]
+      (objT c_QListQStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkConstMethod "horizontalHeaderItem" [intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkConstMethod
+      "indexFromItem"
+      [ptrT . constT $ objT c_QStandardItem]
+      (objT c_QModelIndex)
+  , test (qtVersion >= [4, 2]) $ mkMethod'
+      "insertColumn"
+      "insertColumnWithItems"
+      [intT, objT c_QListQStandardItem]
+      voidT
+  , just $ mkMethod "insertColumn" [intT] boolT
+  , just $ mkMethod'
+      "insertColumn" "insertColumnWithParent" [intT, objT c_QModelIndex] boolT
+  , test (qtVersion >= [4, 2]) $ mkMethod'
+      "insertRow" "insertRowWithItems" [intT, objT c_QListQStandardItem] voidT
+  , test (qtVersion >= [4, 2]) $ mkMethod'
+      "insertRow" "insertRowWithItem" [intT, ptrT $ objT c_QStandardItem] voidT
+  , just $ mkMethod "insertRow" [intT] boolT
+  , just $
+    mkMethod' "insertRow" "insertRowWithParent" [intT, objT c_QModelIndex] boolT
+  , test (qtVersion >= [4, 2]) $
+    mkConstMethod "invisibleRootItem" [] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkConstMethod "item" [intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkConstMethod'
+      "item" "itemWithColumn" [intT, intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkConstMethod
+      "itemFromIndex" [objT c_QModelIndex] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkConstMethod "itemPrototype" [] (ptrT . constT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkMethod "setColumnCount" [intT] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "setHorizontalHeaderItem" [intT, ptrT $ objT c_QStandardItem] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "setHorizontalHeaderLabels" [objT c_QStringList] voidT
+  , test (qtVersion >= [4, 2]) $ mkMethod'
+      "setItem"
+      "setItemWithColumn"
+      [intT, intT, ptrT $ objT c_QStandardItem]
+      voidT
+  , just $ mkMethod "setItem" [intT, ptrT $ objT c_QStandardItem] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "setItemPrototype" [ptrT . constT $ objT c_QStandardItem] voidT
+  -- TODO just $ mkMethod "setItemRoleNames" [objT c_QHash_int_QByteArray] voidT
+  , test (qtVersion >= [4, 2]) $ mkMethod "setRowCount" [intT] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "setVerticalHeaderItem" [intT, ptrT $ objT c_QStandardItem] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "setVerticalHeaderLabels" [objT c_QStringList] voidT
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "takeColumn" [intT] (objT c_QListQStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "takeHorizontalHeaderItem" [intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "takeItem" [intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $ mkMethod'
+      "takeItem" "takeItemWithColumn" [intT, intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "takeRow" [intT] (objT c_QListQStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkMethod "takeVerticalHeaderItem" [intT] (ptrT $ objT c_QStandardItem)
+  , test (qtVersion >= [4, 2]) $
+    mkConstMethod "verticalHeaderItem" [intT] (ptrT $ objT c_QStandardItem)
   ]
 
 c_QStandardItem :: Class
@@ -101,10 +201,107 @@
   , just $ mkCtor "newWithIconAndText" [objT c_QIcon, objT c_QString]
   , just $ mkCtor "newWithRows" [intT]
   , just $ mkCtor "newWithRowsAndColumns" [intT, intT]
-  , just $ mkConstMethod "model" [] (ptrT $ objT c_QAbstractItemModel)
-  , just $ mkProp "text" $ objT c_QString
-  , just $ mkProp "textAlignment" $ bitspaceT bs_Alignment
-  -- TODO other methods
+  , just $ mkConstMethod "accessibleDescription" [] (objT c_QString)
+  , just $ mkConstMethod "accessibleText" [] (objT c_QString)
+  , just $ mkMethod "appendColumn" [objT c_QListQStandardItem] voidT
+  , just $
+    mkMethod' "appendRow" "appendRowItems" [objT c_QListQStandardItem] voidT
+  , just $
+    mkMethod' "appendRow" "appendRowItem" [ptrT $ objT c_QStandardItem] voidT
+  , just $ mkMethod "appendRows" [objT c_QListQStandardItem] voidT
+  , just $ mkConstMethod "background" [] (objT c_QBrush)
+  , just $ mkConstMethod "checkState" [] (enumT e_CheckState)
+  , just $ mkConstMethod "child" [intT] (ptrT $ objT c_QStandardItem)
+  , just $ mkConstMethod'
+      "child" "childWithColumn" [intT, intT] (ptrT $ objT c_QStandardItem)
+  , just $ mkConstMethod "clone" [] (ptrT $ objT c_QStandardItem)
+  , just $ mkConstMethod "column" [] intT
+  , just $ mkConstMethod "columnCount" [] intT
+  , just $ mkConstMethod' "data" "getData" [] (objT c_QVariant)
+  , just $ mkConstMethod' "data" "getDataWithRole" [intT] (objT c_QVariant)
+  , just $ mkConstMethod "flags" [] (bitspaceT bs_ItemFlags)
+  , just $ mkConstMethod "font" [] (objT c_QFont)
+  , just $ mkConstMethod "foreground" [] (objT c_QBrush)
+  , just $ mkConstMethod "hasChildren" [] boolT
+  , just $ mkConstMethod "icon" [] (objT c_QIcon)
+  , just $ mkConstMethod "index" [] (objT c_QModelIndex)
+  , just $ mkMethod "insertColumn" [intT, objT c_QListQStandardItem] voidT
+  , just $ mkMethod "insertColumns" [intT, intT] voidT
+  , just $ mkMethod'
+      "insertRow" "insertRowItems" [intT, objT c_QListQStandardItem] voidT
+  , just $ mkMethod'
+      "insertRow" "insertRowItem" [intT, ptrT $ objT c_QStandardItem] voidT
+  , just $ mkMethod'
+      "insertRows" "insertRowsItems" [intT, objT c_QListQStandardItem] voidT
+  , just $ mkMethod' "insertRows" "insertRowsCount" [intT, intT] voidT
+  , test (qtVersion >= [5, 6]) $ mkConstMethod "isAutoTristate" [] boolT
+  , just $ mkConstMethod "isCheckable" [] boolT
+  , just $ mkConstMethod "isDragEnabled" [] boolT
+  , just $ mkConstMethod "isDropEnabled" [] boolT
+  , just $ mkConstMethod "isEditable" [] boolT
+  , just $ mkConstMethod "isEnabled" [] boolT
+  , just $ mkConstMethod "isSelectable" [] boolT
+  , test (qtVersion >= [5, 6]) $ mkConstMethod "isUserTristate" [] boolT
+  , just $ mkConstMethod "model" [] (ptrT $ objT c_QStandardItemModel)
+  , just $ mkConstMethod "parent" [] (ptrT $ objT c_QStandardItem)
+  -- TODO mkMethod "read" [objT c_QDataStream] voidT
+  , just $ mkMethod "removeColumn" [intT] voidT
+  , just $ mkMethod "removeColumns" [intT, intT] voidT
+  , just $ mkMethod "removeRow" [intT] voidT
+  , just $ mkMethod "removeRows" [intT, intT] voidT
+  , just $ mkConstMethod "row" [] intT
+  , just $ mkConstMethod "rowCount" [] intT
+  , just $ mkMethod "setAccessibleDescription" [objT c_QString] voidT
+  , just $ mkMethod "setAccessibleText" [objT c_QString] voidT
+  , test (qtVersion >= [5, 6]) $ mkMethod "setAutoTristate" [boolT] voidT
+  , just $ mkMethod "setBackground" [objT c_QBrush] voidT
+  , just $ mkMethod "setCheckState" [enumT e_CheckState] voidT
+  , just $ mkMethod "setCheckable" [boolT] voidT
+  , just $ mkMethod'
+      "setChild"
+      "setChildWithColumn"
+      [intT, intT, ptrT $ objT c_QStandardItem]
+      voidT
+  , just $ mkMethod "setChild" [intT, ptrT $ objT c_QStandardItem] voidT
+  , just $ mkMethod "setColumnCount" [intT] voidT
+  , just $ mkMethod "setData" [objT c_QVariant] voidT
+  , just $ mkMethod' "setData" "setDataWithRole" [objT c_QVariant, intT] voidT
+  , just $ mkMethod "setDragEnabled" [boolT] voidT
+  , just $ mkMethod "setDropEnabled" [boolT] voidT
+  , just $ mkMethod "setEditable" [boolT] voidT
+  , just $ mkMethod "setEnabled" [boolT] voidT
+  , just $ mkMethod "setFlags" [bitspaceT bs_ItemFlags] voidT
+  , just $ mkMethod "setFont" [objT c_QFont] voidT
+  , just $ mkMethod "setForeground" [objT c_QBrush] voidT
+  , just $ mkMethod "setIcon" [objT c_QIcon] voidT
+  , just $ mkMethod "setRowCount" [intT] voidT
+  , just $ mkMethod "setSelectable" [boolT] voidT
+  , just $ mkMethod "setSizeHint" [objT c_QSize] voidT
+  , just $ mkMethod "setStatusTip" [objT c_QString] voidT
+  , just $ mkMethod "setText" [objT c_QString] voidT
+  , just $ mkMethod "setTextAlignment" [bitspaceT bs_Alignment] voidT
+  , just $ mkMethod "setToolTip" [objT c_QString] voidT
+  , test (qtVersion >= [5, 6]) $ mkMethod "setUserTristate" [boolT] voidT
+  , just $ mkMethod "setWhatsThis" [objT c_QString] voidT
+  , just $ mkConstMethod "sizeHint" [] (objT c_QSize)
+  , just $ mkMethod "sortChildren" [intT] voidT
+  , just $ mkMethod'
+      "sortChildren" "sortChildrenWithOrder" [intT, enumT e_SortOrder] voidT
+  , just $ mkConstMethod "statusTip" [] (objT c_QString)
+  , just $ mkMethod "takeChild" [intT] (ptrT $ objT c_QStandardItem)
+  , just $ mkMethod'
+      "takeChild"
+      "takeChildWithColumn"
+      [intT, intT]
+      (ptrT $ objT c_QStandardItem)
+  , just $ mkMethod "takeColumn" [intT] (objT c_QListQStandardItem)
+  , just $ mkMethod "takeRow" [intT] (objT c_QListQStandardItem)
+  , just $ mkConstMethod "text" [] (objT c_QString)
+  , just $ mkConstMethod "textAlignment" [] (bitspaceT bs_Alignment)
+  , just $ mkConstMethod "toolTip" [] (objT c_QString)
+  , just $ mkConstMethod' "type" "getType" [] intT
+  , just $ mkConstMethod "whatsThis" [] (objT c_QString)
+  -- TODO mkConstMethod "write" [objT c_QDataStream] voidT
   ]
 
 c_QListQStandardItem :: Class
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs
@@ -55,6 +55,7 @@
   e_WindowType,
   qreal,
   )
+import Graphics.UI.Qtah.Generator.Interface.Gui.QCursor (c_QCursor)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QIcon (c_QIcon)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QRegion (c_QRegion)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QSurface (c_QSurface, e_SurfaceType)
@@ -99,7 +100,7 @@
   , just $ mkMethod "close" [] voidT
   , just $ mkConstMethod "contentOrientation" [] $ enumT e_ScreenOrientation
   , just $ mkMethod "create" [] voidT
-    -- TODO mkProp "cursor" $ objT c_QCursor
+  , just $ mkProp "cursor" $ objT c_QCursor
   , just $ mkMethod "destroy" [] voidT
   , just $ mkConstMethod "devicePixelRatio" [] qreal
   , just $ mkProp "filePath" $ objT c_QString
@@ -134,7 +135,7 @@
   , just $ mkMethod "raise" [] voidT
   , just $ mkMethod "reportContentOrientationChange" [enumT e_ScreenOrientation] voidT
   , just $ mkMethod "requestActivate" [] voidT
-  , test (qtVersion >= [5, 1]) $ mkMethod "requestUpdate" [] voidT
+  , test (qtVersion >= [5, 5]) $ mkMethod "requestUpdate" [] voidT
     -- TODO mkConstMethod "requestedFormat" [] $ objT c_QSurfaceFormat
   , just $ mkMethod' "resize" "resize" [objT c_QSize] voidT
   , just $ mkMethod' "resize" "resizeRaw" [intT, intT] voidT
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs
@@ -20,6 +20,8 @@
 import Foreign.Hoppy.Generator.Spec (
   Callback,
   Export (ExportCallback),
+  addReqIncludes,
+  includeStd,
   makeCallback,
   makeModule,
   moduleAddExports,
@@ -43,6 +45,7 @@
 import Foreign.Hoppy.Generator.Version (collect, just, test)
 import Graphics.UI.Qtah.Generator.Flags (qtVersion)
 import Graphics.UI.Qtah.Generator.Interface.Core.QAbstractItemModel (c_QAbstractItemModel)
+import Graphics.UI.Qtah.Generator.Interface.Core.QDate (c_QDate)
 import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent)
 import Graphics.UI.Qtah.Generator.Interface.Core.QItemSelection (c_QItemSelection)
 import Graphics.UI.Qtah.Generator.Interface.Core.QModelIndex (c_QModelIndex)
@@ -52,6 +55,8 @@
 import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
 import {-# SOURCE #-} Graphics.UI.Qtah.Generator.Interface.Core.QVector (c_QVectorInt)
 import Graphics.UI.Qtah.Generator.Interface.Core.Types (
+  e_DockWidgetArea,
+  bs_DockWidgetAreas,
   bs_ToolBarAreas,
   e_Orientation,
   e_ScreenOrientation,
@@ -69,6 +74,9 @@
   (c_QAbstractButton)
 import {-# SOURCE #-} Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractSlider (e_SliderAction)
 import {-# SOURCE #-} Graphics.UI.Qtah.Generator.Interface.Widgets.QAction (c_QAction)
+import {-# SOURCE #-} Graphics.UI.Qtah.Generator.Interface.Widgets.QDockWidget (
+  bs_DockWidgetFeatures,
+  )
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QGraphicsItem (c_QGraphicsItem)
 import {-# SOURCE #-} Graphics.UI.Qtah.Generator.Interface.Widgets.QSystemTrayIcon (
   e_ActivationReason,
@@ -85,6 +93,8 @@
     moduleAddHaskellName ["Internal", "Callback"]
     moduleAddExports $ collect
       [ just $ ExportCallback cb_BoolVoid
+      , just $ ExportCallback cb_DockWidgetAreaVoid
+      , just $ ExportCallback cb_DockWidgetAreasVoid
       , just $ ExportCallback cb_DoubleVoid
       , just $ ExportCallback cb_IntVoid
       , just $ ExportCallback cb_IntBoolVoid
@@ -104,6 +114,8 @@
       , just $ ExportCallback cb_PtrQWidgetPtrQWidgetVoid
       , just $ ExportCallback cb_QAbstractSliderActionVoid
       , just $ ExportCallback cb_QClipboardModeVoid
+      , just $ ExportCallback cb_QDateVoid
+      , just $ ExportCallback cb_QDockWidgetFeaturesVoid
       , just $ ExportCallback cb_QModelIndexVoid
       , just $ ExportCallback cb_QModelIndexIntIntVoid
       , just $ ExportCallback cb_QModelIndexIntIntQModelIndexIntVoid
@@ -129,6 +141,14 @@
   makeCallback (toExtName "CallbackBoolVoid")
   [boolT] voidT
 
+cb_DockWidgetAreaVoid =
+  makeCallback (toExtName "CallbackDockWidgetAreaVoid")
+  [enumT e_DockWidgetArea] voidT
+
+cb_DockWidgetAreasVoid =
+  makeCallback (toExtName "CallbackDockWidgetAreasVoid")
+  [bitspaceT bs_DockWidgetAreas] voidT
+
 cb_DoubleVoid =
   makeCallback (toExtName "CallbackDoubleVoid")
   [doubleT] voidT
@@ -207,6 +227,15 @@
 cb_QClipboardModeVoid =
   makeCallback (toExtName "CallbackQClipboardModeVoid")
   [enumT QClipboard.e_Mode] voidT
+
+cb_QDateVoid =
+  makeCallback (toExtName "CallbackQDateVoid")
+  [objT c_QDate] voidT
+
+cb_QDockWidgetFeaturesVoid =
+  addReqIncludes [includeStd "QDockWidget"] $
+  makeCallback (toExtName "CallbackQDockWidgetFeaturesVoid")
+  [bitspaceT bs_DockWidgetFeatures] voidT
 
 cb_QModelIndexVoid =
   makeCallback (toExtName "CallbackQModelIndexVoid")
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs
@@ -22,6 +22,24 @@
     [S.ptrT $ S.objT QObject.c_QObject, S.objT String.c_string] S.boolT
   ]
 
+c_ListenerDockWidgetArea =
+  S.makeClass (S.ident "ListenerDockWidgetArea") Nothing [QObject.c_QObject]
+  [ S.mkCtor "new" [S.callbackT C.cb_DockWidgetAreaVoid]
+  , S.mkCtor "newWithParent"
+    [S.callbackT C.cb_DockWidgetAreaVoid, S.ptrT $ S.objT QObject.c_QObject]
+  , S.mkMethod "connectListener"
+    [S.ptrT $ S.objT QObject.c_QObject, S.objT String.c_string] S.boolT
+  ]
+
+c_ListenerDockWidgetAreas =
+  S.makeClass (S.ident "ListenerDockWidgetAreas") Nothing [QObject.c_QObject]
+  [ S.mkCtor "new" [S.callbackT C.cb_DockWidgetAreasVoid]
+  , S.mkCtor "newWithParent"
+    [S.callbackT C.cb_DockWidgetAreasVoid, S.ptrT $ S.objT QObject.c_QObject]
+  , S.mkMethod "connectListener"
+    [S.ptrT $ S.objT QObject.c_QObject, S.objT String.c_string] S.boolT
+  ]
+
 c_ListenerDouble =
   S.makeClass (S.ident "ListenerDouble") Nothing [QObject.c_QObject]
   [ S.mkCtor "new" [S.callbackT C.cb_DoubleVoid]
@@ -166,6 +184,24 @@
     [S.ptrT $ S.objT QObject.c_QObject, S.objT String.c_string] S.boolT
   ]
 
+c_ListenerQDate =
+  S.makeClass (S.ident "ListenerQDate") Nothing [QObject.c_QObject]
+  [ S.mkCtor "new" [S.callbackT C.cb_QDateVoid]
+  , S.mkCtor "newWithParent"
+    [S.callbackT C.cb_QDateVoid, S.ptrT $ S.objT QObject.c_QObject]
+  , S.mkMethod "connectListener"
+    [S.ptrT $ S.objT QObject.c_QObject, S.objT String.c_string] S.boolT
+  ]
+
+c_ListenerQDockWidgetFeatures =
+  S.makeClass (S.ident "ListenerQDockWidgetFeatures") Nothing [QObject.c_QObject]
+  [ S.mkCtor "new" [S.callbackT C.cb_QDockWidgetFeaturesVoid]
+  , S.mkCtor "newWithParent"
+    [S.callbackT C.cb_QDockWidgetFeaturesVoid, S.ptrT $ S.objT QObject.c_QObject]
+  , S.mkMethod "connectListener"
+    [S.ptrT $ S.objT QObject.c_QObject, S.objT String.c_string] S.boolT
+  ]
+
 c_ListenerQModelIndex =
   S.makeClass (S.ident "ListenerQModelIndex") Nothing [QObject.c_QObject]
   [ S.mkCtor "new" [S.callbackT C.cb_QModelIndexVoid]
@@ -345,6 +381,8 @@
     S.moduleAddHaskellName ["Internal", "Listener"]
     S.moduleAddExports $ V.collect
       [ V.just $ S.ExportClass c_ListenerBool
+      , V.just $ S.ExportClass c_ListenerDockWidgetArea
+      , V.just $ S.ExportClass c_ListenerDockWidgetAreas
       , V.just $ S.ExportClass c_ListenerDouble
       , V.just $ S.ExportClass c_ListenerInt
       , V.just $ S.ExportClass c_ListenerIntBool
@@ -361,6 +399,8 @@
       , V.just $ S.ExportClass c_ListenerPtrQWidgetPtrQWidget
       , V.just $ S.ExportClass c_ListenerQAbstractSliderAction
       , V.just $ S.ExportClass c_ListenerQClipboardMode
+      , V.just $ S.ExportClass c_ListenerQDate
+      , V.just $ S.ExportClass c_ListenerQDockWidgetFeatures
       , V.just $ S.ExportClass c_ListenerQModelIndex
       , V.just $ S.ExportClass c_ListenerQModelIndexIntInt
       , V.just $ S.ExportClass c_ListenerQModelIndexIntIntQModelIndexInt
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot
@@ -5,6 +5,8 @@
 import Foreign.Hoppy.Generator.Spec (Class)
 
 c_ListenerBool :: Class
+c_ListenerDockWidgetArea :: Class
+c_ListenerDockWidgetAreas :: Class
 c_ListenerDouble :: Class
 c_ListenerInt :: Class
 c_ListenerIntBool :: Class
@@ -21,6 +23,8 @@
 c_ListenerPtrQWidgetPtrQWidget :: Class
 c_ListenerQAbstractSliderAction :: Class
 c_ListenerQClipboardMode :: Class
+c_ListenerQDate :: Class
+c_ListenerQDockWidgetFeatures :: Class
 c_ListenerQModelIndex :: Class
 c_ListenerQModelIndexIntInt :: Class
 c_ListenerQModelIndexIntIntQModelIndexInt :: Class
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs
@@ -19,6 +19,7 @@
 
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractButton as QAbstractButton
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractGraphicsShapeItem as QAbstractGraphicsShapeItem
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemDelegate as QAbstractItemDelegate
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemView as QAbstractItemView
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractScrollArea as QAbstractScrollArea
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractSlider as QAbstractSlider
@@ -29,9 +30,12 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QBoxLayout as QBoxLayout
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QButtonGroup as QButtonGroup
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QCheckBox as QCheckBox
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDateEdit as QDateEdit
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDateTimeEdit as QDateTimeEdit
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDial as QDial
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDialog as QDialog
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDialogButtonBox as QDialogButtonBox
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDockWidget as QDockWidget
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QDoubleSpinBox as QDoubleSpinBox
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QFileDialog as QFileDialog
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QFormLayout as QFormLayout
@@ -73,10 +77,13 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QStackedLayout as QStackedLayout
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QStackedWidget as QStackedWidget
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QStatusBar as QStatusBar
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QStyledItemDelegate as QStyledItemDelegate
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QSystemTrayIcon as QSystemTrayIcon
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QTabWidget as QTabWidget
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QTextEdit as QTextEdit
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QToolBar as QToolBar
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QToolBox as QToolBox
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QToolButton as QToolButton
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QTreeView as QTreeView
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QTreeWidget as QTreeWidget
 import qualified Graphics.UI.Qtah.Generator.Interface.Widgets.QVBoxLayout as QVBoxLayout
@@ -89,6 +96,7 @@
 modules =
   [ QAbstractButton.aModule
   , QAbstractGraphicsShapeItem.aModule
+  , QAbstractItemDelegate.aModule
   , QAbstractItemView.aModule
   , QAbstractScrollArea.aModule
   , QAbstractSlider.aModule
@@ -99,9 +107,12 @@
   , QBoxLayout.aModule
   , QButtonGroup.aModule
   , QCheckBox.aModule
+  , QDateEdit.aModule
+  , QDateTimeEdit.aModule
   , QDial.aModule
   , QDialog.aModule
   , QDialogButtonBox.aModule
+  , QDockWidget.aModule
   , QDoubleSpinBox.aModule
   , QFileDialog.aModule
   , QFormLayout.aModule
@@ -143,10 +154,13 @@
   , QStackedLayout.aModule
   , QStackedWidget.aModule
   , QStatusBar.aModule
+  , QStyledItemDelegate.aModule
   , QSystemTrayIcon.aModule
   , QTabWidget.aModule
   , QTextEdit.aModule
   , QToolBar.aModule
+  , QToolBox.aModule
+  , QToolButton.aModule
   , QTreeView.aModule
   , QTreeWidget.aModule
   , QTreeWidget.itemModule
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs
@@ -0,0 +1,52 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemDelegate (
+  aModule,
+  c_QAbstractItemDelegate,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportClass),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Widgets", "QAbstractItemDelegate"] $
+  QtExport (ExportClass c_QAbstractItemDelegate) :
+  map QtExportSignal signals
+
+c_QAbstractItemDelegate =
+  addReqIncludes [includeStd "QAbstractItemDelegate"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QAbstractItemDelegate") Nothing [c_QObject] $
+  [ -- TODO Methods.
+  ]
+
+signals =
+  [ -- TODO Signals.
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs
@@ -30,6 +30,7 @@
   makeClass,
   mkBoolHasProp,
   mkConstMethod,
+  mkConstMethod',
   mkMethod,
   mkMethod',
   mkProp,
@@ -59,6 +60,7 @@
   c_ListenerQModelIndex,
   c_ListenerQSize,
   )
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemDelegate (c_QAbstractItemDelegate)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractScrollArea (c_QAbstractScrollArea)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QWidget (c_QWidget)
 import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
@@ -100,11 +102,14 @@
   , mkProp "iconSize" $ objT c_QSize
   , mkConstMethod "indexAt" [objT c_QPoint] $ objT c_QModelIndex
   , mkConstMethod "indexWidget" [objT c_QModelIndex] $ ptrT $ objT c_QWidget
-    -- TODO mkConstMethod' "itemDelegate" "itemDelegate" [] $ ptrT $ objT c_QAbstractItemDelegate
-    -- TODO mkConstMethod' "itemDelegate" "itemDelegateAt" [objT c_QModelIndex] $
-    --      ptrT $ objT c_QAbstractItemDelegate
-    -- TODO mkConstMethod "itemDelegateForColumn" [intT] $ ptrT $ objT c_QAbstractItemDelegate
-    -- TODO mkConstMethod "itemDelegateForRow" [intT] $ ptrT $ objT c_QAbstractItemDelegate
+  , mkConstMethod' "itemDelegate" "itemDelegate" [] $
+    ptrT $ objT c_QAbstractItemDelegate
+  , mkConstMethod' "itemDelegate" "itemDelegateAt" [objT c_QModelIndex] $
+    ptrT $ objT c_QAbstractItemDelegate
+  , mkConstMethod "itemDelegateForColumn" [intT] $
+    ptrT $ objT c_QAbstractItemDelegate
+  , mkConstMethod "itemDelegateForRow" [intT] $
+    ptrT $ objT c_QAbstractItemDelegate
   , mkMethod "keyboardSearch" [objT c_QString] voidT
   , mkProp "model" $ ptrT $ objT c_QAbstractItemModel
   , mkMethod "openPersistentEditor" [objT c_QModelIndex] voidT
@@ -120,9 +125,9 @@
   , mkProp "selectionModel" $ ptrT $ objT c_QItemSelectionModel
   , mkMethod "setDropIndicatorShown" [boolT] voidT
   , mkMethod "setIndexWidget" [objT c_QModelIndex, ptrT $ objT c_QWidget] voidT
-    -- TODO mkMethod "setItemDelegate" [ptrT $ objT c_QAbstractItemDelegate] voidT
-    -- TODO mkMethod "setItemDelegateForColumn" [intT, ptrT $ objT c_QAbstractItemDelegate] voidT
-    -- TODO mkMethod "setItemDelegateForRow" [intT, ptrT $ objT c_QAbstractItemDelegate] voidT
+  , mkMethod "setItemDelegate" [ptrT $ objT c_QAbstractItemDelegate] voidT
+  , mkMethod "setItemDelegateForColumn" [intT, ptrT $ objT c_QAbstractItemDelegate] voidT
+  , mkMethod "setItemDelegateForRow" [intT, ptrT $ objT c_QAbstractItemDelegate] voidT
   , mkConstMethod "showDropIndicator" [] boolT
   , mkConstMethod "sizeHintForColumn" [intT] intT
   , mkConstMethod "sizeHintForIndex" [objT c_QModelIndex] $ objT c_QSize
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs
@@ -67,11 +67,11 @@
   classSetEntityPrefix "" $
   makeClass (ident "QAction") Nothing [c_QObject] $
   collect
-  [ test (qtVersion >= [5, 0]) $ mkCtor "new" []
+  [ test (qtVersion >= [5, 7]) $ mkCtor "new" []
   , just $ mkCtor "newWithParent" [ptrT $ objT c_QObject]
-  , test (qtVersion >= [5, 0]) $ mkCtor "newWithText" [objT c_QString]
+  , test (qtVersion >= [5, 7]) $ mkCtor "newWithText" [objT c_QString]
   , just $ mkCtor "newWithTextAndParent" [objT c_QString, ptrT $ objT c_QObject]
-  , test (qtVersion >= [5, 0]) $ mkCtor "newWithIconAndText" [objT c_QIcon, objT c_QString]
+  , test (qtVersion >= [5, 7]) $ mkCtor "newWithIconAndText" [objT c_QIcon, objT c_QString]
   , just $ mkCtor "newWithIconAndTextAndParent"
     [objT c_QIcon, objT c_QString, ptrT $ objT c_QObject]
   , just $ mkProp "actionGroup" $ ptrT $ objT c_QActionGroup
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs
@@ -0,0 +1,58 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QDateEdit (
+  aModule,
+  c_QDateEdit,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportClass),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  )
+import Foreign.Hoppy.Generator.Types (objT, ptrT)
+import Foreign.Hoppy.Generator.Version (collect, just)
+import Graphics.UI.Qtah.Generator.Interface.Core.QDate (c_QDate)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QDateTimeEdit (
+  c_QDateTimeEdit,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QWidget (c_QWidget)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Widgets", "QDateEdit"]
+  [ QtExport $ ExportClass c_QDateEdit ]
+
+c_QDateEdit =
+  addReqIncludes [includeStd "QDateEdit"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDateEdit") Nothing [c_QDateTimeEdit] $
+  collect
+  [ just $ mkCtor "new" []
+  , just $ mkCtor "newWithParent" [ptrT $ objT c_QWidget]
+  , just $ mkCtor "newWithDate" [objT c_QDate]
+  , just $ mkCtor "newWithDateAndParent" [objT c_QDate, ptrT $ objT c_QWidget]
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs
@@ -0,0 +1,108 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QDateTimeEdit (
+  aModule,
+  c_QDateTimeEdit,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportBitspace, ExportClass, ExportEnum),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  ident1,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkCtor,
+  mkProp,
+  )
+import Foreign.Hoppy.Generator.Types (bitspaceT, boolT, enumT, intT, objT)
+import Foreign.Hoppy.Generator.Version (collect, just, test)
+import Graphics.UI.Qtah.Generator.Flags (qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.QDate (c_QDate)
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Internal.Listener (c_ListenerQDate)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractSpinBox (
+  c_QAbstractSpinBox,
+  )
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Widgets", "QDateTimeEdit"] $
+  QtExport (ExportClass c_QDateTimeEdit) :
+  map QtExportSignal signals ++
+  (map QtExport . collect)
+  [ just $ ExportEnum e_Section
+  , just $ ExportBitspace bs_Sections
+  ]
+
+c_QDateTimeEdit =
+  addReqIncludes [includeStd "QDateTimeEdit"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDateTimeEdit") Nothing [c_QAbstractSpinBox] $
+  collect
+  [
+  -- Properties
+    test (qtVersion >= [4, 2]) $ mkProp "calendarPopup" boolT
+  , just $ mkProp "currentSection" (enumT e_Section)
+  , test (qtVersion >= [4, 3]) $ mkProp "currentSectionIndex" intT
+  , just $ mkProp "date" (objT c_QDate)
+  -- TODO just $ mkProp "dateTime" (objT c_QDateTime)
+  , just $ mkProp "displayFormat" (objT c_QString)
+  , just $ mkConstMethod "displayedSections" [] (bitspaceT bs_Sections)
+  , just $ mkProp "maximumDate" (objT c_QDate)
+  -- TODO test (qtVersion >= [4, 4]) $
+  --      mkProp "maximumDateTime" (objT c_QDateTime)
+  -- TODO just $ mkProp "maximumTime" c_QTime
+  , just $ mkProp "minimumDate" (objT c_QDate)
+  -- TODO test (qtVersion >= [4, 4]) $
+  --      mkProp "minimumDateTime" (objT c_QDateTime)
+  -- TODO just $ mkProp "minimumTime" c_QTime
+  , test (qtVersion >= [4, 3]) $ mkConstMethod "sectionCount" [] intT
+  -- TODO just $ mkProp "time" c_QTime
+  -- TODO test (qtVersion >= [4, 4]) $ mkProp "timeSpec" Qt.TimeSpec
+  -- Public Functions
+  , just $ mkCtor "new" []
+  -- TODO Other methods.
+  ]
+
+signals =
+  [ makeSignal c_QDateTimeEdit "dateChanged" c_ListenerQDate
+  -- TODO void dateTimeChanged(const QDateTime &datetime)
+  -- TODO void timeChanged(const QTime &time)
+  ]
+
+(e_Section, bs_Sections) = makeQtEnumBitspace
+  (ident1 "QDateTimeEdit" "Section")
+  "Sections"
+  [includeStd "QDateTimeEdit"]
+  [ (0x0000, ["no", "section"])
+  , (0x0001, ["am", "pm", "section"])
+  , (0x0002, ["m", "sec", "section"])
+  , (0x0004, ["second", "section"])
+  , (0x0008, ["minute", "section"])
+  , (0x0010, ["hour", "section"])
+  , (0x0100, ["day", "section"])
+  , (0x0200, ["month", "section"])
+  , (0x0400, ["year", "section"])
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs
@@ -0,0 +1,107 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2015-2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QDockWidget (
+  aModule,
+  c_QDockWidget,
+  e_DockWidgetFeature,
+  bs_DockWidgetFeatures,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportBitspace, ExportClass, ExportEnum),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  ident1,
+  includeStd,
+  makeClass,
+  mkBoolIsProp,
+  mkConstMethod,
+  mkCtor,
+  mkProp,
+  )
+import Foreign.Hoppy.Generator.Types (bitspaceT, boolT, enumT, objT, ptrT)
+import Foreign.Hoppy.Generator.Version (collect, just, test)
+import Graphics.UI.Qtah.Generator.Flags (qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (
+  e_DockWidgetArea,
+  bs_DockWidgetAreas,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Internal.Listener (
+  c_ListenerBool,
+  c_ListenerDockWidgetArea,
+  c_ListenerDockWidgetAreas,
+  c_ListenerQDockWidgetFeatures,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QAction (c_QAction)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QWidget (c_QWidget)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Widgets", "QDockWidget"] $
+  map QtExport
+  [ ExportClass c_QDockWidget
+  , ExportEnum e_DockWidgetFeature
+  , ExportBitspace bs_DockWidgetFeatures
+  ] ++
+  map QtExportSignal signals
+
+c_QDockWidget =
+  addReqIncludes [includeStd "QDockWidget"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDockWidget") Nothing [c_QWidget] $
+  collect
+  [ just $ mkCtor "new" []
+  , just $ mkCtor "newWithParent" [ptrT $ objT c_QWidget]
+  , just $ mkCtor "newWithText" [objT c_QString]
+  , just $ mkCtor "newWithTextAndParent" [objT c_QString, ptrT $ objT c_QWidget]
+    -- TODO Ctor with Qt::WindowFlags.
+  , just $ mkProp "allowedAreas" $ bitspaceT bs_DockWidgetAreas
+  , just $ mkConstMethod "isAreaAllowed" [enumT e_DockWidgetArea] $ boolT
+  , just $ mkProp "features" $ bitspaceT bs_DockWidgetFeatures
+  , just $ mkBoolIsProp "floating"
+  , test (qtVersion >= [4, 3]) $ mkProp "titleBarWidget" $ ptrT $ objT c_QWidget
+  , just $ mkConstMethod "toggleViewAction" [] $ ptrT $ objT c_QAction
+  , just $ mkProp "widget" $ ptrT $ objT c_QWidget
+  ]
+
+signals =
+  collect
+  [ just $ makeSignal c_QDockWidget "allowedAreasChanged" c_ListenerDockWidgetAreas
+  , test (qtVersion >= [4, 3]) $
+    makeSignal c_QDockWidget "dockLocationChanged" c_ListenerDockWidgetArea
+  , just $ makeSignal c_QDockWidget "featuresChanged" c_ListenerQDockWidgetFeatures
+  , just $ makeSignal c_QDockWidget "topLevelChanged" c_ListenerBool
+  , just $ makeSignal c_QDockWidget "visibilityChanged" c_ListenerBool
+  ]
+
+(e_DockWidgetFeature, bs_DockWidgetFeatures) =
+  makeQtEnumBitspace (ident1 "QDockWidget" "DockWidgetFeature") "DockWidgetFeatures"
+  [includeStd "QDockWidget"] $
+  [ (0x0, ["no", "dock", "widget", "features"])
+  , (0x1, ["dock", "widget", "closable"])
+  , (0x2, ["dock", "widget", "movable"])
+  , (0x4, ["dock", "widget", "floatable"])
+  , (0x7, ["all", "dock", "widget", "features"])  -- Deprecated
+  , (0x8, ["dock", "widget", "vertical", "title", "bar"])
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot
@@ -0,0 +1,24 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2015-2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QDockWidget (
+  bs_DockWidgetFeatures,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (Bitspace)
+
+bs_DockWidgetFeatures :: Bitspace
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs
@@ -32,10 +32,11 @@
   ident1,
   includeStd,
   makeClass,
-  mkMethod,
   mkConstMethod,
+  mkConstMethod',
+  mkMethod,
   mkMethod',
-  mkConstMethod'
+  mkProp,
   )
 import Foreign.Hoppy.Generator.Types (voidT, objT, ptrT, boolT, constT, intT)
 import Foreign.Hoppy.Generator.Version (collect, just, test)
@@ -44,6 +45,7 @@
 import Graphics.UI.Qtah.Generator.Interface.Core.QPointF (c_QPointF)
 import Graphics.UI.Qtah.Generator.Interface.Core.QRectF (c_QRectF)
 import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Gui.QCursor (c_QCursor)
 -- import Graphics.UI.Qtah.Generator.Interface.Gui.QPolygonF (c_QPolygonF)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QPainterPath (c_QPainterPath)
 -- import Graphics.UI.Qtah.Generator.Interface.Gui.QTransform (c_QTransform)
@@ -95,7 +97,7 @@
   , mkConstMethod "commonAncestorItem" [ptrT $ constT $ objT c_QGraphicsItem] $
       ptrT $ objT c_QGraphicsItem
   , mkConstMethod "contains" [objT c_QPointF] boolT
-  -- TODO mkConstMethod "cursor" [] $ objT c_QCursor
+  , mkProp "cursor" $ objT c_QCursor
   -- TODO mkConstMethod "data" [intT] $ objT c_QVariant
   -- TODO mkConstMethod "deviceTransform" [objT c_QTransform] $ objT c_QTransform
   , mkConstMethod "effectiveOpacity" [] qreal
@@ -270,7 +272,6 @@
   , mkMethod "setBoundingRegionGranularity" [qreal] voidT
   -- TODO mkMethod "setCacheMode" [objT c_CacheMode] voidT
   -- TODO mkMethod' "setCacheMode" "setCacheModeAll" [objT c_CacheMode, objT c_QSize] voidT
-  -- TODO mkMethod "setCursor" [objT c_QCursor] voidT
   -- TODO mkMethod "setData" [intT, objT c_QVariant] voidT
   , mkMethod "setEnabled" [boolT] voidT
   , mkMethod "setFiltersChildEvents" [boolT] voidT
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs
@@ -45,7 +45,11 @@
   voidT,
   )
 import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
-import Graphics.UI.Qtah.Generator.Interface.Core.Types (bs_Alignment, e_TextFormat)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (
+  bs_Alignment,
+  bs_TextInteractionFlags,
+  e_TextFormat,
+  )
 import Graphics.UI.Qtah.Generator.Interface.Gui.QPixmap (c_QPixmap)
 import Graphics.UI.Qtah.Generator.Interface.Internal.Listener (c_ListenerQString)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QFrame (c_QFrame)
@@ -90,7 +94,7 @@
   , mkMethod "setSelection" [intT, intT] voidT
   , mkProp "text" $ objT c_QString
   , mkProp "textFormat" $ enumT e_TextFormat
-    -- TODO textInteractionFlags
+  , mkProp "textInteractionFlags" $ bitspaceT bs_TextInteractionFlags
   , mkProp "wordWrap" boolT
   ]
 
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs
@@ -28,15 +28,24 @@
   includeStd,
   makeClass,
   mkBoolIsProp,
+  mkConstMethod,
+  mkConstMethod',
   mkCtor,
   mkMethod,
   mkMethod',
   mkProp,
   )
-import Foreign.Hoppy.Generator.Types (boolT, objT, ptrT, voidT)
+import Foreign.Hoppy.Generator.Types (boolT, enumT, intT, objT, ptrT, voidT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QByteArray (c_QByteArray)
 import Graphics.UI.Qtah.Generator.Interface.Core.QSize (c_QSize)
 import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (
+  e_Corner,
+  e_DockWidgetArea,
+  e_Orientation,
+  )
 import Graphics.UI.Qtah.Generator.Interface.Internal.Listener (c_ListenerQSize)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QDockWidget (c_QDockWidget)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QMenu (c_QMenu)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QMenuBar (c_QMenuBar)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QStatusBar (c_QStatusBar)
@@ -62,7 +71,9 @@
   [ mkCtor "new" []
   , mkCtor "newWithParent" [ptrT $ objT c_QWidget]
     -- TODO Ctor with Qt::WindowFlags.
-    -- TODO addDockWidget
+  , mkMethod "addDockWidget" [enumT e_DockWidgetArea, ptrT $ objT c_QDockWidget] voidT
+  , mkMethod' "addDockWidget" "addDockWidgetWithOrientation"
+    [enumT e_DockWidgetArea, ptrT $ objT c_QDockWidget, enumT e_Orientation] voidT
     -- TODO mkMethod' "addToolBar" "addToolBarWithArea" [e_ToolBarArea, ptrT $ objT c_QToolBar]
     --      voidT
   , mkMethod "addToolBar" [ptrT $ objT c_QToolBar] voidT
@@ -70,24 +81,28 @@
     -- TODO addToolBarBreak
   , mkBoolIsProp "animated"
   , mkProp "centralWidget" $ ptrT $ objT c_QWidget
-    -- TODO corner
+  , mkConstMethod "corner" [enumT e_Corner] $ enumT e_DockWidgetArea
   , mkMethod "createPopupMenu" [] $ ptrT $ objT c_QMenu
   , mkBoolIsProp "dockNestingEnabled"
     -- TODO dockOptions
-    -- TODO dockWidgetArea
+  , mkConstMethod "dockWidgetArea" [ptrT $ objT c_QDockWidget] $ enumT e_DockWidgetArea
   , mkProp "documentMode" boolT
   , mkProp "iconSize" $ objT c_QSize
     -- TODO insertToolBar
     -- TODO insertToolBarBreak
   , mkProp "menuBar" $ ptrT $ objT c_QMenuBar
   , mkProp "menuWidget" $ ptrT $ objT c_QWidget
-    -- TODO removeDockWidget
-    -- TODO restoreState
-    -- TODO saveState
-    -- TODO setCorner
+  , mkMethod "removeDockWidget" [ptrT $ objT c_QDockWidget] voidT
+  , mkMethod "restoreDockWidget" [ptrT $ objT c_QDockWidget] boolT
+  , mkMethod "restoreState" [objT c_QByteArray] boolT
+  , mkMethod' "restoreState" "restoreStateWithVersion" [objT c_QByteArray, intT] boolT
+  , mkConstMethod "saveState" [] (objT c_QByteArray)
+  , mkConstMethod' "saveState" "saveStateWithVersion" [intT] (objT c_QByteArray)
+  , mkMethod "setCorner" [enumT e_Corner, enumT e_DockWidgetArea] voidT
     -- TODO setTabPosition
     -- TODO setTabShape
-    -- TODO splitDockWidget
+  , mkMethod "splitDockWidget"
+    [ptrT $ objT c_QDockWidget, ptrT $ objT c_QDockWidget, enumT e_Orientation] voidT
   , mkProp "statusBar" $ ptrT $ objT c_QStatusBar
     -- TODO tabifiedDockWidgets
     -- TODO tabifyDockWidget
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs
@@ -0,0 +1,60 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QStyledItemDelegate (
+  aModule,
+  c_QStyledItemDelegate,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportClass),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  )
+import Foreign.Hoppy.Generator.Types (objT, ptrT)
+-- import Graphics.UI.Qtah.Generator.Interface.Core.QLocale (c_QLocale)
+import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemDelegate (c_QAbstractItemDelegate)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModuleWithMinVersion)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+minVersion = [4, 4]
+
+aModule =
+  AQtModule $
+  makeQtModuleWithMinVersion ["Widgets", "QStyledItemDelegate"] minVersion
+  [ QtExport $ ExportClass c_QStyledItemDelegate ]
+
+c_QStyledItemDelegate =
+  addReqIncludes [includeStd "QStyledItemDelegate"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QStyledItemDelegate") Nothing [c_QAbstractItemDelegate] $
+  [
+  -- Public Functions
+    mkCtor "new" []
+  , mkCtor "newWithParent" [ptrT $ objT c_QObject]
+  -- TODO mkConstMethod
+  --     "displayText" [objT c_QVariant, objT c_QLocale] (objT c_QString)
+  -- TODO QItemEditorFactory * itemEditorFactory() const
+  -- TODO void setItemEditorFactory(QItemEditorFactory *factory)
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs
@@ -0,0 +1,103 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QToolBox (
+  aModule,
+  c_QToolBox,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Class,
+  Export (ExportClass),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkCtor,
+  mkMethod,
+  mkMethod',
+  )
+import Foreign.Hoppy.Generator.Types (
+  bitspaceT, boolT, intT, objT, ptrT, voidT,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (bs_WindowFlags)
+import Graphics.UI.Qtah.Generator.Interface.Gui.QIcon (c_QIcon)
+import Graphics.UI.Qtah.Generator.Interface.Internal.Listener (c_ListenerInt)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QFrame (c_QFrame)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QWidget (c_QWidget)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule :: AModule
+aModule =
+  AQtModule $
+  makeQtModule ["Widgets", "QToolBox"] $
+  QtExport (ExportClass c_QToolBox) :
+  map QtExportSignal signals
+
+c_QToolBox :: Class
+c_QToolBox =
+  addReqIncludes [includeStd "QToolBox"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QToolBox") Nothing [c_QFrame]
+  [
+  -- Properties
+    mkConstMethod "count" [] intT
+  , mkConstMethod "currentIndex" [] intT
+  -- Public Functions
+  , mkCtor "new" []
+  , mkCtor "newWithParent" [ptrT $ objT c_QWidget]
+  , mkCtor
+      "newWithParentAndFlags" [ptrT $ objT c_QWidget, bitspaceT bs_WindowFlags]
+  , mkMethod'
+      "addItem"
+      "addItemWithIcon"
+      [ptrT $ objT c_QWidget, objT c_QIcon, objT c_QString]
+      intT
+  , mkMethod "addItem" [ptrT $ objT c_QWidget, objT c_QString] intT
+  , mkConstMethod "currentWidget" [] (ptrT $ objT c_QWidget)
+  , mkConstMethod "indexOf" [ptrT $ objT c_QWidget] intT
+  , mkMethod'
+      "insertItem"
+      "insertItemWithIcon"
+      [intT, ptrT $ objT c_QWidget, objT c_QIcon, objT c_QString]
+      intT
+  , mkMethod "insertItem" [intT, ptrT $ objT c_QWidget, objT c_QString] intT
+  , mkConstMethod "isItemEnabled" [intT] boolT
+  , mkConstMethod "itemIcon" [intT] (objT c_QIcon)
+  , mkConstMethod "itemText" [intT] (objT c_QString)
+  , mkConstMethod "itemToolTip" [intT] (objT c_QString)
+  , mkMethod "removeItem" [intT] voidT
+  , mkMethod "setItemEnabled" [intT, boolT] voidT
+  , mkMethod "setItemIcon" [intT, objT c_QIcon] voidT
+  , mkMethod "setItemText" [intT, objT c_QString] voidT
+  , mkMethod "setItemToolTip" [intT, objT c_QString] voidT
+  , mkConstMethod "widget" [intT] (ptrT $ objT c_QWidget)
+  -- Public Slots
+  , mkMethod "setCurrentIndex" [intT] voidT
+  , mkMethod "setCurrentWidget" [ptrT $ objT c_QWidget] voidT
+  ]
+
+signals :: [Signal]
+signals =
+  [ makeSignal c_QToolBox "currentChanged" c_ListenerInt
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs
@@ -0,0 +1,74 @@
+-- This file is part of Qtah.
+--
+-- Copyright 2015-2018 The Qtah Authors.
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+module Graphics.UI.Qtah.Generator.Interface.Widgets.QToolButton (
+  aModule,
+  c_QToolButton,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  Export (ExportEnum, ExportClass),
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  ident1,
+  includeStd,
+  makeClass,
+  mkCtor,
+  mkMethod,
+  mkProp,
+  )
+import Foreign.Hoppy.Generator.Types (boolT, enumT, objT, ptrT, voidT)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (e_ArrowType, e_ToolButtonStyle)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractButton (c_QAbstractButton)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QAction (c_QAction)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QMenu (c_QMenu)
+import Graphics.UI.Qtah.Generator.Interface.Widgets.QWidget (c_QWidget)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Widgets", "QToolButton"]
+  [ QtExport $ ExportClass c_QToolButton
+  , QtExport $ ExportEnum e_ToolButtonPopupMode
+  ]
+
+c_QToolButton =
+  addReqIncludes [includeStd "QToolButton"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QToolButton") Nothing
+  [ c_QAbstractButton ]
+  [ mkCtor "new" []
+  , mkCtor "newWithParent" [ptrT $ objT c_QWidget]
+  , mkProp "arrowType" $ enumT e_ArrowType
+  , mkProp "autoRaise" boolT
+  , mkProp "defaultAction" $ ptrT $ objT c_QAction
+  , mkProp "menu" $ ptrT $ objT c_QMenu
+  , mkProp "popupMode" $ enumT e_ToolButtonPopupMode
+  , mkProp "toolButtonStyle" $ enumT e_ToolButtonStyle
+  , mkMethod "showMenu" [] voidT
+  ]
+
+e_ToolButtonPopupMode =
+  makeQtEnum (ident1 "QToolButton" "ToolButtonPopupMode") [includeStd "QToolButton"]
+  [ (0, ["delayed", "popup"])
+  , (1, ["menu", "button", "popup"])
+  , (2, ["instant", "popup"])
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs
@@ -28,13 +28,15 @@
   ident,
   includeStd,
   makeClass,
-  mkCtor,
   mkBoolIsProp,
+  mkCtor,
   mkMethod,
+  mkProp,
   )
-import Foreign.Hoppy.Generator.Types (intT, voidT)
+import Foreign.Hoppy.Generator.Types (boolT, intT, objT, voidT)
 import Foreign.Hoppy.Generator.Version (collect, just, test)
 import Graphics.UI.Qtah.Generator.Flags (qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.QModelIndex (c_QModelIndex)
 import Graphics.UI.Qtah.Generator.Interface.Widgets.QAbstractItemView (c_QAbstractItemView)
 import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
 import Graphics.UI.Qtah.Generator.Types
@@ -54,11 +56,31 @@
   classSetEntityPrefix "" $
   makeClass (ident "QTreeView") Nothing [c_QAbstractItemView] $
   collect
-  [ just $ mkCtor "new" []
-  , just $ mkBoolIsProp "headerHidden"
-  , just $ mkMethod "resizeColumnToContents" [intT] voidT
+  [
+  -- Properties
+    test (qtVersion >= [4, 2]) $ mkProp "allColumnsShowFocus" boolT
+  , test (qtVersion >= [4, 2]) $ mkBoolIsProp "animated"
+  , test (qtVersion >= [4, 3]) $ mkProp "autoExpandDelay" intT
+  , test (qtVersion >= [4, 4]) $ mkProp "expandsOnDoubleClick" boolT
+  , test (qtVersion >= [4, 4]) $ mkBoolIsProp "headerHidden"
+  , just $ mkProp "indentation" intT
+  , just $ mkProp "itemsExpandable" boolT
+  , just $ mkProp "rootIsDecorated" boolT
   , test (qtVersion >= [4, 2]) $ mkBoolIsProp "sortingEnabled"
-  -- TODO add more methods
+  , just $ mkProp "uniformRowHeights" boolT
+  , test (qtVersion >= [4, 3]) $ mkProp "wordWrap" boolT
+  -- Public Functions
+  , just $ mkCtor "new" []
+  -- Public Slots
+  , just $ mkMethod "collapse" [objT c_QModelIndex] voidT
+  , test (qtVersion >= [4, 2]) $ mkMethod "collapseAll" [] voidT
+  , just $ mkMethod "expand" [objT c_QModelIndex] voidT
+  , test (qtVersion >= [4, 2]) $ mkMethod "expandAll" [] voidT
+  , test (qtVersion >= [4, 3]) $ mkMethod "expandToDepth" [intT] voidT
+  , just $ mkMethod "hideColumn" [intT] voidT
+  , just $ mkMethod "resizeColumnToContents" [intT] voidT
+  , just $ mkMethod "showColumn" [intT] voidT
+  -- TODO Other methods.
   ]
 
 signals :: [Signal]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs
@@ -38,6 +38,7 @@
 import Foreign.Hoppy.Generator.Types (bitspaceT, boolT, enumT, intT, objT, ptrT, voidT)
 import Foreign.Hoppy.Generator.Version (collect, just, test)
 import Graphics.UI.Qtah.Generator.Flags (keypadNavigation, qdoc, qtVersion)
+import Graphics.UI.Qtah.Generator.Interface.Core.QByteArray (c_QByteArray)
 import Graphics.UI.Qtah.Generator.Interface.Core.QMargins (c_QMargins)
 import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
 import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
@@ -53,6 +54,10 @@
   e_WindowType,
   qreal,
   )
+import Graphics.UI.Qtah.Generator.Interface.Core.QPalette (
+  e_ColorRole
+  )
+import Graphics.UI.Qtah.Generator.Interface.Gui.QCursor (c_QCursor)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QFont (c_QFont)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QIcon (c_QIcon)
 import Graphics.UI.Qtah.Generator.Interface.Gui.QPaintDevice (c_QPaintDevice)
@@ -93,7 +98,7 @@
     -- TODO addActions
   , just $ mkMethod "adjustSize" [] voidT
   , just $ mkConstMethod "autoFillBackground" [] boolT
-    -- TODO backgroundRole
+  , just $ mkProp "backgroundRole" $ enumT e_ColorRole
   , just $ mkConstMethod "baseSize" [] $ objT c_QSize
   , just $ mkConstMethod' "childAt" "childAtRaw" [intT, intT] $ ptrT $ objT c_QWidget
   , just $ mkConstMethod' "childAt" "childAtPoint" [objT c_QPoint] $ ptrT $ objT c_QWidget
@@ -105,7 +110,7 @@
   , just $ mkConstMethod "contentsMargins" [] $ objT c_QMargins
   , just $ mkConstMethod "contentsRect" [] $ objT c_QRect
   , just $ mkProp "contextMenuPolicy" $ enumT e_ContextMenuPolicy
-    -- TODO cursor
+  , just $ mkProp "cursor" $ objT c_QCursor
     -- TODO effectiveWinId
   , just $ mkConstMethod "ensurePolished" [] voidT
     -- TODO find
@@ -125,7 +130,7 @@
     -- TODO grabGesture
   , just $ mkMethod "grabKeyboard" [] voidT
   , just $ mkMethod "grabMouse" [] voidT
-    -- TODO grabMouse(const QCursor&)
+  , just $ mkMethod' "grabMouse" "grabMouseWithCursor" [objT c_QCursor] voidT
     -- TODO grabShortcut
     -- TODO graphicsEffect
     -- TODO graphicsProxyWidget
@@ -215,8 +220,8 @@
     -- TODO repaint(const QRegion&)
   , just $ mkMethod' "resize" "resize" [objT c_QSize] voidT
   , just $ mkMethod' "resize" "resizeRaw" [intT, intT] voidT
-    -- TODO restoreGeometry
-    -- TODO saveGeometry
+  , just $ mkMethod "restoreGeometry" [objT c_QByteArray] boolT
+  , just $ mkConstMethod "saveGeometry" [] (objT c_QByteArray)
   , just $ mkMethod' "scroll" "scrollRaw" [intT, intT] voidT
   , just $ mkMethod' "scroll" "scrollRect" [intT, intT, objT c_QRect] voidT
   , just $ mkMethod "setAcceptDrops" [boolT] voidT
