I plan making a multiple window interface instead of the visual mess zkanji currently is. Having said that, I don’t have any well designed windows at the moment. In the past 2 days I was struggling with making an acceptable user interface for the kanji search window, but with no success.
Qt is great in many things. For example it has a library that provides many things that should be in STL. (A good string handling for example.) Surprisingly, interface design is not among its strong points. It’s possible to do everything you want with it, but it requires a lot of work, and the visual designer included with the library is simply bad. It allows placing “widgets” on windows, organize them in groups (by putting them on the same parent widget) and there are those evil things called layouts. Even if all you want is placing standard looking edit boxes, check boxes and buttons on windows, as soon as you want those to be placed at specific locations you are out of luck. The layouts will make sure they get stretched or moved to the wrong side of the window. (There are solutions but they are all awkward and break as soon as you change some setting in the system. For example font size.)
But what if you want something else? Your program will definitely require a specific widget behavior, the widget should be placed on a toolbar, its size should match some criteria not directly related to the contents of the widget. There are many such things that are probably only needed in one of every ten programs, but at least one of them will definitely be needed. In those cases the only solution is to write code in the constructor. Code, that (in my opinion) should be handled by the designer just as well. Is that such a bad thing? you might ask. Unfortunately yes. Once a widget is out of place, layouts become unusable. Programmatically inserting something in the middle of an interface is one thing, but more often than not it also means you can’t place the rest of the interface either. Not to mention it’s very difficult to design something if you can’t see the final result in your design.
So I finally gave up. Previously I thought most open source programs look and behave bad simply because the creators were lazy and had absolutely no sense of taste for design, and can’t imagine themselves in the place of their users. (Because they are good coders and not good designers or something.) Now I think it’s that, AND every free UI library or toolkit are bad as well. Rant over.
I’m now aiming at making a feature complete program that will look bad (hopefully only at first), but work as good as zkanji does currently. There will be casualties (I threw out the 4-corner kanji lookup, and you can’t add a word with different meanings several times to groups) but in general I hope it will work just as well or even better than zkanji previously did.