On Tue, Jan 29, 2013 at 11:05 AM, Rutledge Shawn <shawn.rutle...@digia.com> wrote: > Mark Summerfield writes: >> I am trying to create a "pure" QML program, so may main.cpp is simply: >> >> #include <QGuiApplication> >> #include <QQmlEngine> >> #include <QQuickView> >> int main(int argc, char *argv[]) >> { >> QGuiApplication app(argc, argv); >> QQmlEngine engine; >> QQuickView view(&engine, 0); >> view.setSource(QUrl("qrc:/myapp.qml")); >> view.show(); >> return app.exec(); >> } >> >> In myapp.qml I have: >> >> import QtQuick 2.0 >> import QtQuick.Window 2.0 >> Window { >> title: "Caption" >> ... >> } >> >> But there doesn't seem to be any API for setting the application's icon. >> (I know I could use QApplication, but I am trying to avoid using >> QWidget.) >> >> Is it possible to set an application icon, and if so, how? > > Currently there isn't a way to do it from QML. This is because we have not > exposed QIcon as a QtQuick type. Window icons can be different sizes, > depending on the context in which the windowing system shows them (as a > decoration on the title bar, on a task bar or dock, as "tiles" or whatever). > QIcon allows you to provide multiple image sizes, but we didn't design the > QML API for that yet. The simplest is that we could add an image source URL > to QQuickWindow, you could provide a medium-sized image for the icon, and it > can be scaled down (as small as 16 pixels sometimes); but the result will be > less optimal than if you could provide a 16-pixel icon yourself, in addition > to the larger one. We will need icons for Actions too, which we are in the > process of adding to QtQuick. So my opinion is that we need proper icon > objects in QtQuick for both use cases. > > A QML Window is a QQuickWindow which is a subclass of QWindow, so the method > you would want to call is QWindow::setIcon(QIcon &). Maybe you can create a > subclass of QQuickWindow in C++ which sets the icon, do qmlRegisterType to > make it available, and instantiate that instead of plain Window? I haven't > tried that myself, but it seems like it should work.
There's an even simpler way to do it from C++ - just manage the window there. QQuickView is a window as well, just use that as the window (instead of having an empty window as well as the Window{}), and call setIcon on it. That's just adding "view.setIcon(icon);" in your existing C++ code, and using an Item{} as the root of myapp.qml instead of Window{}. > Sorry it's not straightforward yet, but I think we will need to add the QML > window icon API as soon as we have the Icon API figured out in general. The Window{} QML API is also really new, so there's a lot more work to be done with controlling windows from QML. Right now, it's probably easiest to control the main window from C++. -- Alan Alpert _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest