Qtah - Qt Bindings for Haskell

Qtah is a set of Qt bindings for Haskell, providing a traditional imperative interface to a mature GUI toolkit.  Qtah uses Hoppy to bind to C++ code, and is free software under the Lesser General Public License v3.

As of version 0.8.0, Qtah includes 230 classes from QtCore, QtGui, and QtWidgets. Patches for any area are welcome, so if you'd like to contribute or give feedback, send me an email or head on over to GitLab (link below).  Adding a new function or method is usually just a few lines of code.

Thanks to the Qt documentation mentioning when items are added to the API, Qtah can generate bindings for arbitrary versions of Qt.  Currently all 5.x versions are supported, though I am only testing against stable Qt versions on Gentoo and NixOS.

I have Goatee partly ported to Qtah: screenshot.


Latest News

See the changelog for further detail into what's mentioned here.

2024-04-28: Fool me twice (moving to Sourcehut)

2021-11-18: Porting Goatee to Qt

2021-02-06: Hoppy 0.8.0 and Qtah 0.8.0 released

2018-06-05: Hoppy 0.5.0 and Qtah 0.5.0 released

2018-02-09: Gentoo overlay now listed in Layman

See all posts related to Qtah.


Qtah configured for Qt 5 is available on Hackage as qtah-qt5.  During installation, Qtah will automatically configure itself for the specific Qt version you have installed.  There are examples available in qtah-examples, and also some supporting packages qtah-cpp-qt5 and qtah-generator that are used in the build process.

$ cabal install qtah-qt5
$ cabal install --enable-executable-dynamic qtah-examples

Using, building, and extending Qtah is documented in the readmeAPI documentation is available (this is currently a 0.3.0 snapshot, install a later version to get its documentation).

Gentoo users can use the ebuilds in my overlay, and Nix expressions are available for Nix users.


Qtah is hosted on GitLab: project page, issue tracker.  Clone the source from one of: