On Sunday, 13 October 2013 at 20:41:01 UTC, michaelc37 wrote:
On Sunday, 13 October 2013 at 12:39:55 UTC, Abdulhaq wrote:
Hi guys
a few months ago I tried to find working bindings for Qt and
the best I could see was qtd. I tried compiling it but it
didn't go too well on my Linux 64bit machine, and saw in the
forums that the original developers had ceased maintaining it.
Because I have been using Qt for around 10 years or so now
(mainly from python but a little C++ too) I had a go at
getting it to work again.
It took a few weekends but I got the main examples going
(Core, GUI, XML etc) with Qt 4.8 and 2.062. I felt that I was
having to do some rewinding of where the original developers
were going (it seemed that they were trying to take QRect et
al down the struct route, but my to my newbie eyes it seemed
doomed because it was making assumptions about the way the C++
and D compilers were laying out the struct data that didn't
work on my machine - but I could be wrong about that). Anyway
I treated it as an educational exercise and make QRect et al.
regular classes, and got it generally working again.
Then real life took over again and I had to shelve the
project, but now I have a little spare time again. I suspect
there are other developers such as myself out there who are
keen to try D but would like to use it with Qt, so I thought I
would let you know what I had done in case others were
interested. I'm kind of hoping that someone will say that the
job is already done, but I suspect that is not the case.
The original developers did a really great job of the wrapping
and left the build system in a really good state too. However,
there seems to be very little testing other than the standard
qt examples themselves, so I can't be sure exactly where the
wrapping stands. Although the original developers felt that it
had some way to go before being really useful, it seems to me
that they had achieved more than that and that some would want
to use it as it stood.
Unfortunately the wrapping is based on QtJambi, which is now
dead, but anyway it's easy with hindsight isn't it.
Is anyone else interested and can anyone help me with
polishing it? It needs testing, trying out on Windows, and
some improvements to the build system. I have very little time
ATM but it would be good to capture where I've got to so that
others could pick it up or just experiment with D and Qt.
regards
Abdulhaq
Hi, my story is similar to yours.
but anyway long story short,
i recently managed to get it compiling again with qt 4.8 and
dmd 2.063.2.
https://bitbucket.org/michaelc37/qtd-experimental
i think for the QRect problem i ended up passing pointers, i
also updated alot of the examples.
i'd like to have a look at your work where can i find it?.
Hah, sounds like we did exactly the same thing :-) ! I haven't
uploaded the code anywhere yet, I was waiting to see if anyone
was interested...
I also ran into a problem (I think I remember correctly) in the
QMetaTypeImpl.d area, worrying about code like:
// COMPILER BUG: cannot put this inside
qRegisterMetaTypeStreamOperators
// COMPILER BUG 2: cannot use extern(C) with templated functions:
extern(C) void foo(T)(){}
private template streamOpShim(alias op)
{
extern(C) void streamOpShim()
{
asm
{
naked;
push EBP;
mov EBP, ESP;
mov EAX, 0x8[EBP];
push EAX;
mov EAX, 0xC[EBP];
call op;
leave;
ret;
}
}
}
as to whether it would work in 64bit or not? I think I came to
the conclusion that this was a very minor part of Qt and not to
worry about it...
Coming back to the code now I think i'm going to have to read the
D book again before I have another stab at it...