therecipe / qt

Qt binding for Go (Golang) with support for Windows / macOS / Linux / FreeBSD / Android / iOS / Sailfish OS / Raspberry Pi / AsteroidOS / Ubuntu Touch / JavaScript / WebAssembly
GNU Lesser General Public License v3.0
10.49k stars 748 forks source link

Actual name and wiki entry #382

Open ShalokShalom opened 7 years ago

ShalokShalom commented 7 years ago

The actual name of this binding is simply "qt"? I am asking since i write the entry in Qts own Wiki for it. I am wondering its not there yet..

therecipe commented 7 years ago

Hey

The actual name of this binding is simply "qt"?

Yeah, actually it's nameless. I wasn't able to come up with something I liked and the obvious ones like "goqt" or "qtgo" were already taken, so I just called the repo "qt" and moved on. So yeah "qt" is the official name, I guess.

I am asking since i write the entry in Qts own Wiki for it. I am wondering its not there yet..

I'm not sure, I did know that Qt had a wiki but I thought that it was inactive. However, I would be happy if this binding would be listed there :)

ShalokShalom commented 7 years ago

I think it IS inactive. ;)

I add qt to this list, no acceptance yet, while Ruby and Perl, both with Qt1 until Qt4 support are still in and two other bindings are also added. https://wiki.qt.io/Language_Bindings

Maybe i ping an admin later, no reaction on Qt either yet.

ShalokShalom commented 7 years ago

CuteGo QuteGo

GoCute GoQute

joeblew99 commented 7 years ago

Nice name :) needs some name that sticks in people's minds

masiulaniec commented 7 years ago

Please don't invent cute names. The ruby world is infested with project names such as "cucumber". One of the benefits of go's hierarchical url-based import path approach is that package names can be simply self-describing. In other words, workarounds from systems using flat namespaces don't apply here.

masiulaniec commented 7 years ago

A related question is whether the current split into large core, gui, widgets, etc., packages is the best possible one. It seems like if all I need is a QLabel, then I should be able to write:

import "github.com/therecipe/qt/QLabel"

... to gain access to the *QLabel.Object type, thus avoiding the cost of compiling&linking 95% of stuff I don't need.

I wonder if this approach was considered but rejected.

therecipe commented 7 years ago

@masiulaniec

A related question is whether the current split into large core, gui, widgets, etc., packages is the best possible one. I wonder if this approach was considered but rejected.

Yeah, I recall thinking about that when I split the large "qt" pkg from the early days into the modules. (And also again when the "widgets" module, took 8gb ram to compile)

I think I tried and rejected it because there was a) a lot of duplicate C and Go code necessary to get it working and b) I had problems with circle dependencies.

ShalokShalom commented 7 years ago

@therecipe Any suggestions? I added your project now to the Qt Wiki: https://wiki.qt.io/Language_Bindings

I think it would be nice to list all the supported Qt library's since some offer 4 of them, others all and so on. You wrote, "Most of Qt's API is accessible from Go."

Is there a specific list?

therecipe commented 7 years ago

@ShalokShalom Ah, thank you :)

Any suggestions?

Maybe it should be mentioned that you can subclass with the help of qtmoc and thereby extend your "classes" (Go has only structs and no real classes) with custom signals/slots/properties/constructors. That rcc and {win|mac}deployqt are wrapped by qtrcc and qtdeploy, and that you can simply cross compile to most other targets (>= 10) with the help of docker and vagrant. And that you can use docker and vagrant for your CI and CD purposes as well. But there are also a few other things, like the fact that you can re-generate the whole binding with qtsetup against a range of Qt versions. Or that the binding is a one to one mapping against Qt's C++ api. Or maybe even that you don't have to install Qt on your pc at all, if you run the minimal setup with docker. Or that you can override virtual functions (and also signals/slots) at runtime with anonymous functions (Lambdas). And there are probably a few other notable things as well.

But I just took another look to see what has been written for the other bindings, and that was not that much :D So I'm not sure if you can use my suggestions from above at all.

The only thing that comes close to PyQt's and PySide's docs, tutorials and such. Is probably the slack channel: https://gophers.slack.com/messages/qt-binding/details But even I just visit it infrequently.

Also thanks for the name suggestions. But I'm not really sure if I want to attach a "Go" suffix or prefix at all to it.

Is there a specific list? Yes, you can find one here: https://github.com/therecipe/qt/blob/8ca9dc8f59110a659dabdef0201eaeb74f49efc1/internal/binding/parser/helper.go#L257-L311

And another one would be the list of folders at the root of the repo: https://github.com/therecipe/qt Each folder (beside "cmd" and "internal") is a Qt module.

ShalokShalom commented 7 years ago

Thanks a lot, that helps me further.

RadhiFadlillah commented 7 years ago

Well, since qt is pronounced kyu-tee, what about :

@masiulaniec I think it's fine if package's name is not self-describing, simply because number of vocabulary is limited while number of libraries or packages will keep growing. Even in Go community there are many packages whose name doesn't describing himself, like gin, martini, cockroach, hugo, etc.

ShalokShalom commented 7 years ago

This repo suggests to name it therecipe-qt: https://github.com/wzwmzm/therecipe-qt/commits/master ;)

therecipe commented 7 years ago

@RadhiFadlillah Also thanks for the name suggestions :) But I'm not really sure, I'm not really a fan of "go" prefixes or suffixes to be honest.

Huholoman commented 7 years ago

Goqu is already taken by sql builder.

ShalokShalom commented 7 years ago

It might be nice to offer a template for the Qt Creator:

screenshot_20170831_125104

therecipe commented 7 years ago

@ShalokShalom Yepp that would be nice, and I think it's also already in the works: https://github.com/gotschmarcel/qtcreator-go But I haven't really looked into that yet.

mewmew commented 7 years ago

If it has to be renamed, I'd go for cute; as that is both memorable and roughly how I would pronounce qt.

justinclift commented 6 years ago

@therecipe Since you're stuck when trying to decide on the name, why don't we just do a vote thing and be done with it? As long as the end result isn't horrible that'd "get it done" so there's one less thing taking up potential thinking time. :smile:

ShalokShalom commented 6 years ago

Go + Qt = Goat ^-^

amitdo commented 6 years ago
ShalokShalom commented 6 years ago

Qopher sounds nice too

sebnarvaez commented 6 years ago

I second "Qopher". "Quza" is another option (refering to how Mexicans refer to Gophers, "Tuza").

tobimensch commented 6 years ago

qtee (pronounced cutie) gott (play on German word Gott, which mean's god in English. go stands for go, and tt stands for trolltech, which used to be the name of the company that developed Qt, tt is so to speak the god (creator) of Qt)

paboum commented 5 years ago
ilovesusu commented 4 years ago

GoQt like pyqt

ShalokShalom commented 4 years ago

GoQt is already in use

uvatbc commented 4 years ago

QGoatee

nyiyui commented 4 years ago

goside like pyside

tox2ik commented 3 years ago

CuteWalk ot QuteWalk

brenthuisman commented 3 years ago

Qt for Go (similar to the official Python bindings).

w3bb commented 3 years ago

gute, it's how you pronounce qt but with a g. Or maybe just gt.