The ICSNetwork Challenge Hall of Fame

Q30.  Which one of the following file types is not an XML format?
  • Qt Designer ui files
  • Qt resource qrc files
  • Qt translation ts files
  • Qt translation qm files

A30.  Qt translation qm files

Q29.  Can a slot be connected to another slot?

A29.  Yes

Q28.  What are the names of the four main layout manager classes provided by Qt?

A28.  QBoxLayout, QFormLayout, QGridLayout, and QStackedLayout.

Q27.  The model names of the Raspberry Pi, Model A and Model B, are references to what British educational computer that was popular in the 1980s?

A27.  The BBC Micro

Q26. When a new component is implemented in QML, what determines the name of the component?

A26.  The QML file name

And the winner is:
Thiago Corrêa
Sao Paulo, Brazil

Q25. The new C++11 type inference feature uses a keyword that has existed in the C programming language from the start, but was rarely used. What keyword is it?

A25.  "auto"

And the winner is:
Toby Kaneshiro
King George, VA 22485

Q24.  Name two ways to export a method from C++ to QML.

A24.  Slots and Q_INVOKABLE

And the winner is:
Marcin Jabrzyk
Rybnik, Poland

Q23.  What new HTML 5 tag could potentially replace the need for Adobe Flash on web sites?

A23.  <video>

And the winner is:
To Be Announced

Q22.  What was the previous name of PhoneGap when it became an Apache project before it was renamed as Apache Cordova?

A22.  Apache Callback

And the winner is:
Akil Wiltshire
Chaguanas, Trinidad and Tobago

Q21.  What is the name of the new graphics architecture in Qt for rendering in QML?

A21.  Scene Graph

And the winner is:
Wes Hardaker
Davis, CA

Q20.  Tizen follows a standard called WAC. What does the acronym stand for in this context?

A20.  Wholesale Applications Community

And the winner is:
Rahul Garg

Q19.   What was the code name for the research project that became the Qt Platform Abstraction?

A19.  Lighthouse

And the winner is:
Alex Malyushytsky
Mountain View, CA

Q18.   What is generally easier to implement using Qt: SDI or MDI?

A18.  SDI

And the winner is:
Ahapkin Ruslan
Moscow, Russia

Q17.   In addition to C++, as of Qt 4.7, what new programming language can be used to develop Qt applications?

A17.  QML

Q16.   When transitioning between states in QML, what are the values of target properties not referenced in PropertyChanges elements?

A16.  A. Target properties not referenced in the PropertyChanges elements are returned to their
default values specified in the target element definition.

In the following example, a transition from state1 to state2 will reset
color to "red":

Rectangle {
       id: myRect;
       width: 200; height: 200; color: "red"; opacity: 1.0;
State {
       id "state1"
       PropertyChanges ( target: myRect; color: "green"; opacity: .5 }

State {
       id: "state2"
       PropertyChanges { target: myRect; opacity: 0 }

And the winner is:
Yury Chebiryak
Schlieren, Switzerland

Q15.   Images can be rotated around the Z axis in Qt Quick by changing their rotation property. How do you rotate an Image around the X or Y axes?

A15.  Rotation property holds the rotation of the item in degrees clockwise. This specifies how many degrees to rotate the item around its transformOrigin around the z axis.

The Rotation object gives more control over rotation than using Item's rotation property. Specifically, it allows (z axis) rotation to be relative to an arbitrary point.

Rotation also provides a way to specify 3D-like rotations for Items. For these types of rotations you must specify the axis to rotate around in addition to the origin point. In the following example the image is rotated around y axis

Image {
              source: "pics/qt.png"
             transform: Rotation { origin.x: 30; origin.y: 30; axis { x: 0;
                                                  y: 1; z: 0 } angle: 18 }
             smooth: true

And the winner is:
Albano Gheller
Maggiate Inferiore, Italy

Q14.  Formerly known as the Maemo 6 UI framework, the Harmattan UI Framework, and DirectUI, what is the new name for the Qt-based framework for creating applications for touch-enabled devices?

A14.  MeeGo Touch Framework

And the winner is:
Roland Müller
Pirkkala, Finland

Q13.  What three new methods were added to the QVariant class in Qt 4.6.0?

  • QVariant::QVariant ( float val )
  • float QVariant::toFloat ( bool * ok = 0 ) const
  • qreal QVariant::toReal ( bool * ok = 0 ) const

And the winner is:
Ramya Murthy
Forest Hills, NY

Q12.  The QSharedMemory class can be used to implement inter-process communication (IPC). What other Qt module can be used for more sophisticated IPC, although it is currently limited to Unix platforms?

A12.  QtDBus

And the winner is:
Jacobus Koster
Milpitas, CA

Q11.  What was the original name for Qt Creator when it was first announced?

A11.  Greenhouse

And the winner is:
Bradley A. Smith
El Segundo, CA

Q10.  The Eclipse releases have been given code names including Callisto, Europa, Ganymede, and Galileo. Where do these names come from?

A10.  They are named after moons of the planet Jupiter. The first three Eclipse releases were named after the moons Callisto, Europa, and Ganymede. The fourth release was slated to be named after the moon Io but since "Io" looks a lot like "10" or "I/O", the Eclipse planning council instead decided to name it after the astronomer who discovered these four moons, Galileo Galilei.

And the winner is:
Joseph Caputo
Marlton, NJ

Q9.  What is the name of WebKit's new JavaScript engine?

A9.  SquirrelFish

And the winner is:
Pablo Rogina

Q8.  What new localization tool is included in the Qt 4.5 release?

A8.  lconvert can convert files between .ts, .po, and .xlf formats.

And the winner is:
Ken Do
San Jose, CA

Q7.  What is the Acid2 Browser Test

A7.  Acid2 tests support for HTML, CSS, and other web standards. It is not a comprehensive test, but provide a good basis for evaluating a browser's conformance to standards.

And the winner is:
Didier Collard
Baarn, The Netherlands

Q6. If you look at the Qt source, the class QWidget has only one private non-static data member. This is surprising for a class that holds so much information. There is, in fact, a technical reason for this. What is it?

A6.  All data members of QWidget are in a separate class, accessible only through a private member of QWidget: the d-pointer. This technique, known under various names (d-pointer, Pimpl, handle/body or Cheshire Cat) is used because adding data members directly to the QWidget class between versions of the Qt library would break binary compatibility. For more information, see

And the winner is:
Ron Natalie
Herndon, VA

Q5. If you were to show data in a list as a bar graph, what class would you sub-class to get started?

A5.  QStyledItemDelegate

And the winner is:
Pierre-Étienne Messier
Broussard, QC Canada

Q4a. How many design patterns can you think of that are used in QObject? Name them.

A4a.  Composite, Reflection

Q4b. Which design patterns help you implement lazy copy on write?

A4b.  Flyweight, Proxy, Bridge

Q4c. How can the strategy pattern get rid of switch statements?

A4c.  Use virtual function calls instead.

Q4d. Which design pattern helps you implement undo/rollback/journaling?

A4d.  Command pattern

Q4e. What is common to behavioral design patterns?

A4e.  They describe how to organize code.

Q4f. What is common to structural design patterns?

A4f.  They describe how to organize objects.

And the winner is:
Renaud Guezennec
Arles, France

Q3.  What two new components of Qt 4.4 originally came from the KDE project?

A2.  WebKit and Phonon

And the winner is:
Pierre Poulin
Montreal, QC Canada

Q2.  QGraphicsView came from the earlier QCanvas framework. What project did QCanvas come from?

A2.  QwSpriteField, written by Warwick Allison.

Q2 Bonus.  How fast is Graphics View collision detection?

A2 Bonus.  O(n log(n))

And the winner is:
Austin Bowman
Gateshead, UK

Q1.  When defining a Qt class with slots, the keyword "slots" is used. But in the Qt header file <qobjectdefs.h>, "slots" is defined to be an empty string. So why do we need to use the "slots" keyword?

A1.  The "slots" keyword is used by the moc meta-object compiler to identify slots so it can generate the meta-object information for them.

And the winner is:
Jonathan Brady
Birkenhead, Wirral, UK