Gad D Lord
Gad D Lord

Reputation: 6762

QT bindings for Delphi 2010

Why isn't anyone developing QT bindings for Delphi.

In the past we had QT 2.x integrated as CLX in Delphi.

I really hate the CLX wrappers since they were buggy and hard to extend.

But why isn't anyone making an API list of external DLL calls to use (the same way JCL wraps the Windows API).

Is it so hard to code such API function mapping? Or maybe the QT classes cannot be exposed to non-C callers?

Any hint in this direction is welcome.

Upvotes: 3

Views: 1552

Answers (4)

Gad D Lord
Gad D Lord

Reputation: 6762

I managed to port the qt4.pas from http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html.

It is originally written for Lazarus but I managed to port it to Delphi.

One must do the following

  1. declare

    type PUInt = ^Integer; PTRUINT = PUInt; PtrInt = ^Integer; PPtrInt = ^PtrInt;

  2. comment out all calls with "qword" paramters since quad-words are not supported in Delphi

  3. comment out "{$mode objfpc}{$H+}" since this is Lazarus stuff
  4. replace all "cdecl; external" with "cdecl; overload; external"

Than the demos can be compiled and run just fine with Delphi.

Upvotes: 1

A.Bouchez
A.Bouchez

Reputation: 246

I recommend you wait for VCL+, that is the Qt binding coming with the next version of Delphi.

The problem is that Qt is heavily macro-based and C++ based. So the Qt "flat API" is quite verbose and big. I wonder how EMB will create its own VCL+ binding, but I'll definitively wait for their implementation for using Qt on any Delphi project.

If you can't wait, and really want cross-platform User Interface (with Mac O$ support), I recommend using http://www.twinforms.com/products/wxformsdelphi and not Qt. It relies on a separate DLL, but it's easier to develop, and well maintained/documented.

Upvotes: 1

Mason Wheeler
Mason Wheeler

Reputation: 84550

From what I've heard, apparently the cross-platform component library for Delphi XE2 (version due out next year) will be QT based, sorta like CLX only it should actually work right.

Upvotes: 0

Uli Gerhardt
Uli Gerhardt

Reputation: 14001

qtintf.dll seems to be the flat API DLL you're looking for and Qt.pas the corresponding import unit.

Upvotes: 1

Related Questions