Important: Please read the Qt Code of Conduct -

Qt Quick programs for Desktop?

  • Now, according to Qt Quick web site.."Qt Quick is a collection of technologies that are designed to help developers create the kind of intuitive, modern, fluid user interfaces...."
    Is it possible to provide the same kind of UI for desktop applications using Qt Quick? I want to provide a fluid , stylish UI for my desktop application. Popular programs like Autodesk Maya have used Qt for their UI. I was wondering how one would go about designing a UI like that. Even DAZ 3D programs have very good UI design. Can I use Qt Quick to provide such a UI for desktop programs?
    If not, what are the other Qt options to design a modern UI? Would Qt Stylesheets help me achieve what I need? I have used CSS 3 extensively and Qt Stylesheet comes very close to what CSS can do for you in browsers, but I'm not sure about the extent to which I can exploit the Qt Stylesheet features.


  • Without knowing your actual goals, it's hard to decide if Qt Quick can or will be able to support that. I don't know what you mean by 'modern'. At the moment, just based on officially released code (but including Qt 5.0 alpha), I think the answer must be "no: Qt Quick is not (yet) for you". There is work going on a set of desktop components. You can already find some impressive demos on the net. There is also a presentation video from last year's Developer Days that demonstrates live on stage the construction of a spottify client application (for the desktop) based on this component set. I thought it was an impressive demonstration.

    Personally, I think it will be a very capable UI technology also for the desktop, but it is not quite there yet. However, once it is, it will make making fluid, animated UI's much easier than what can can currently do with the widgets and style sheets. Style sheets can alter the way your widgets look, but not really how they feel or act. They are a very cool technology and enable some very nice tricks, but they are rather static. It takes quite a bit of work to for instance create a message that nicely slides into and out of a parent widget and pushes its existing content out of the way. It is doable though using the animation framework, style sheets and some manual positioning of widgets (I know, I did it).

    However, this is all my take on it.

  • Qt GUI design components can be used to give my GUI a native look and feel, something that's platform specific. For example, if I design a normal dialog in Qt, and deploy it on Linux/X11 and Windows, in both these platforms, the dialog will take on a look that fits into the general look and feel of the host platform. The dialog deployed on X11 will have the same feel as every other dialog in X11. Same goes for Windows. In a way, if I look at the dialog alone, I can tell which platform the program is running on. So, the dialog design is driven (or restricted) by the platform in many ways.
    By modern GUI design , I mean complete independence over the design of everything within my UI - right from the title bar of the main window to every other widget. I wish to style everything independently. For example, I might not want my buttons to be rectangle, but elliptical. Or, if I hover my mouse over the button it should magnify in size or change it's shape (like it's done in CSS 3 with webkits).

    The point is, mobile and web GUI components have a contemporary, independent feel about them. Like a menu in an Android App is a 3D sphere and I can rotate the sphere by touching it to see the entire menu. Mobile and web GUI tools give you the ability to design entirely new GUI concepts, that break away from the traditional (for some people, boring) designs. The same kind of revolutionary transformation has not taken place with Desktop GUI (or probably, it was a conscious decision not to transform so drastically). Unity and Gnome 3 have taken a step towards that goal for Linux, but an application designed with those components won't be cross-platform. That's where Qt comes in.

    With Qt Quick and QML, all that can be done for mobile devices. But I wish to do the same for desktop programs - for the simplest use case, make the dialog box look a lot more stylish. Is this possible with Qt components?

    Sorry, the question is a little open-ended. But I'm new to Qt and haven't so far exploited it to the fullest, so I'm not sure of what all can be accomplished with Qt for the Desktop.


  • Ok, so for you, 'modern' means 'different' or 'custom'.

    That's quite a way away from my own definition of the term, so I guess it is good to hear. Also, in general I would not deviate too much from platform standards without good reason (and I don't think looking different or modern is a good reason, but that's just me).

    If you want to create fully custom look, sure, QML can certainly help you there. However, QML is about much more than that. It is not only about how it looks, but how it behaves. The looks of most things can be changes with stylesheets (though not directly the title bar, that will need a bit more work). The thing that needs most work in QML on the desktop, is to make QML applications basically look and act like any other application, while still giving you full power to tweak behavior, animation, etc.

  • Yes, being 'custom' would let me go modern or different if i want to, it certainly gives the designer the ability to do so.

    Thanks, I'll try to work the best out of QML and Qt.

    Great piece of software!

  • Deviating from the system GUI-look-and-feel is an anti-pattern, especially when it's only for looking "cool" and eye candy. It's okay when graphics software and video editing software make their UI colors darker to allow editing media with less visual distraction, but styling the GUI like some Microsoft® Windows® software does (especially Graphics Card drivers, Printer drivers and antivirus software) should be avoided.
    In that sense: Stylesheets and QML considered harmful.
    Your software must excel by its function (including intuitive UI design (arrangement, workflow, cursor paths)), not by styling/color/shape, disturbing animations, shaders, blinking lights.

    //EDIT: Unless, of course, you're writing a game. Games may do anything, in my opinion, because you don't use them to get things done, but explicitly to enjoy also the looks.

  • Actually the software I intend to build is a Graphics oriented software. I looked at Autodesk Maya and the DAZ 3D software, and I liked it. Yes, usability and an intuitive feel are the first criteria, but I would also like the software to look and feel good.
    And I just found exactly what I want , at Qt's Application Guide page here :) -
    The guide is - Qt Quick Application Developer Guide for Desktop

    The guide's introductory paragraph on 'Why to use this guide' is quite apt here.

    The application will not look and feel like a typical or classical desktop application, meaning
    that common well-known UI Elements used in desktop apps such as toolbars, menus, dialogs
    etc will not be present. This application is inspired by the modern fluid UIs, but the deployable
    target is a desktop environment.

    Comes very close to my requirements.

  • [quote author="DerManu" date="1336665105"]Your software must excel by its function (including intuitive UI design (arrangement, workflow, cursor paths)).[/quote]
    Well, which most probably requires you to deviate from the system human interface guidelines, because many use cases do not fit them, although beeing forced into them for the last two decades.

    We will see more and more applications abandoning system guidelines, which is, in my humble opinion, actually a good thing, because form follows function, not the other way round. And QtQuick is a perfect fit here in most cases.

    "This": is just one example of many.

  • Hey, thanks for the link. That was great!
    Here's the project page of Light Table:

    It's not related to Qt,but since we're discussing interfaces, Light Table demonstrates how futuristic interfaces are being conceived and how really helpful it could be.

  • [quote author="Lukas Geyer" date="1336676971"][quote author="DerManu" date="1336665105"]Your software must excel by its function (including intuitive UI design (arrangement, workflow, cursor paths)).[/quote]
    Well, which most probably requires you to deviate from the system human interface guidelines, because many use cases do not fit them, although beeing forced into them for the last two decades.
    Could you give us some good examples?

    At first sight, I disagree. I think following established patterns where possible is good. Yes, there are places where you'd like to deviate, but you'd better be sure about the UX of those.

    I really am not opposed to innovation on the UI front, and I really do realize that one size does not fit all. But I am very cautious when people try to be different because they think it looks modern, or it looks nice, as opposed to when it helps their users to perform their task quicker or with less mental load. Animations for instance can be a really powerful aid to explain the user what's happening. In that sense they can be a great tool to build better user interfaces. But on the other hand, they are very easy to abuse as well. They can be very distracting if used wrong, and hurt usability in that way.

    [quote]We will see more and more applications abandoning system guidelines, which is, in my humble opinion, actually a good thing, because form follows function, not the other way round. And QtQuick is a perfect fit here in most cases.[/quote]
    I'm afraid we're going to see a lot of crappy interfaces that are different just to be different. It's the web all over again: nothing standard, having to figure out how to work each interface on its own. But yes, they do look pretty.

  • I don't think that user interfaces should evolve in they way they look like, but they should evolve in the way they actually work, they way information is structured and presented to the user. It is the feel that has to change, not (so much) the look.

    When I talk about interface guidelines I do not only mean the color and shape of buttons, when to use and when to not use animations or the margin and padding of elements - but much more how we've been trained to actually structure our applications and the workflow. We have learned to use (both when creating and consuming applications) a very narrow set of widgets and workflows which became an artifical limitation to the usability. The video I've linked is quite a good example.

    Our world is full of non-standardized, task-centric, but yet very easy to consume user interfaces. Think of vending or ticket machines, cash dispenser or professional group-specfic interfaces, like medical devices, design software or industrial machinery. Most applications are created to cater a specific task and they deserve a specific interface. As you correctly said, one size doesn't fit all.

    I think the visual appearance and the appeal of applications is another important, yet neglected aspect. Humans are visual creatures, whose brain is trained to perceive and associate information. That's the reason we still use whiteboards, mindmaps and paper to be creative, because the typical application is just flat. It presents us a bunch of information with no visual connection. We tend to group information types together (actions at the top, status at the bottom, additional infromation in dialogs), instead of the information itself.

    I also think that the "learning effect" argument is stressed way to much, for the simple fact that even a standard-conform application has to learned, a non-standard conform application is not automatically harder to learn (quite contrary to, when done correctly it will be much easier to learn) and that it is always better to have an application which is hard to learn and efficient to use instead of beeing easy to learn and inefficient to use.

    Yes, there is a huge potential to non-standard designs to be abused and good user interface design actually is rocket science, but there is also a huge potential in improved usability. Saying that every application has to conform to the standard and doing not so is actually an anti-pattern (and thus results in less valuable applications) is flat out wrong.

Log in to reply