Results 1 to 13 of 13

Thread: Custom Widget doesn t show.

  1. #1
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default Custom Widget doesn t show.

    I have created a custom widget and a plugin for that widget in Designer. I have tested the custom widget localy and it works fine. The widget appears in the widget box in designer/form editor and I can drag i it to my window hand handle the signals & and slots. But when I hit preview or compile the widget doesn´t show. I do not get any error messages and when i look into the generated ui_XXXXX.h and it looks fine. What am I missing? Could Upload All code......

    customDial.proj
    Qt Code:
    1. CONFIG += designer \
    2. plugin \
    3. debug_and_release
    4. TARGET = $$qtLibraryTarget(speeddialplugin)
    5. TEMPLATE = lib
    6. HEADERS = speeddialplugin.h \
    7. qtsvgdialgauge.h \
    8. qtsvgpixmapcache.h
    9. SOURCES = speeddialplugin.cpp \
    10. qtsvgdialgauge.cpp \
    11. qtsvgpixmapcache.cpp
    12. RESOURCES = icons.qrc \
    13. skins.qrc
    14. LIBS += -L.
    15. target.path = $$[QT_INSTALL_PLUGINS]/designer
    16. INSTALLS += target
    17. INCLUDEPATH += $$PWD
    18. DEPENDPATH += $$PWD
    19.  
    20. # include(speeddial.pri)
    21. QT += svg
    To copy to clipboard, switch view to plain text mode 


    speedDialPlugin.h
    Qt Code:
    1. #ifndef SPEEDDIALPLUGIN_H
    2. #define SPEEDDIALPLUGIN_H
    3.  
    4. #include <QtDesigner/QDesignerCustomWidgetInterface>
    5. #include <QObject>
    6. #include <Qt>
    7.  
    8. class speedDialPlugin : public QObject, public QDesignerCustomWidgetInterface
    9. {
    10. Q_OBJECT
    11.  
    12. public:
    13. speedDialPlugin(QObject *parent = 0);
    14.  
    15. bool isContainer() const;
    16. bool isInitialized() const;
    17. QIcon icon() const;
    18. QString domXml() const;
    19. QString group() const;
    20. QString includeFile() const;
    21. QString name() const;
    22. QString toolTip() const;
    23. QString whatsThis() const;
    24. QWidget *createWidget(QWidget *parent);
    25. void initialize(QDesignerFormEditorInterface *core);
    26.  
    27. private:
    28. bool m_initialized;
    29. };
    30.  
    31. #endif
    To copy to clipboard, switch view to plain text mode 

    speedDialPlugin.cpp

    Qt Code:
    1. #include "qtsvgdialgauge.h"
    2. #include "speeddialplugin.h"
    3.  
    4. #include <QtCore/QtPlugin>
    5.  
    6. speedDialPlugin::speedDialPlugin(QObject *parent)
    7. : QObject(parent)
    8. {
    9. m_initialized = false;
    10. }
    11.  
    12. void speedDialPlugin::initialize(QDesignerFormEditorInterface * /* core */)
    13. {
    14. if (m_initialized)
    15. return;
    16.  
    17. // Add extension registrations, etc. here
    18.  
    19. m_initialized = true;
    20. }
    21.  
    22. bool speedDialPlugin::isInitialized() const
    23. {
    24. return m_initialized;
    25. }
    26.  
    27. QWidget *speedDialPlugin::createWidget(QWidget *parent)
    28. {
    29. //return new speedDial(parent);
    30.  
    31. QtSvgDialGauge * gauge = new QtSvgDialGauge(parent);
    32. gauge->setSkin("Tachometer");
    33. gauge->setMinimum(0);
    34. gauge->setMaximum(120);
    35. gauge->setValue(0);
    36. return gauge;
    37. }
    38.  
    39. QString speedDialPlugin::name() const
    40. {
    41. return QLatin1String("speedDial");
    42. }
    43.  
    44. QString speedDialPlugin::group() const
    45. {
    46. return QLatin1String("");
    47. }
    48.  
    49. QIcon speedDialPlugin::icon() const
    50. {
    51. return QIcon();
    52. }
    53.  
    54. QString speedDialPlugin::toolTip() const
    55. {
    56. return QLatin1String("");
    57. }
    58.  
    59. QString speedDialPlugin::whatsThis() const
    60. {
    61. return QLatin1String("");
    62. }
    63.  
    64. bool speedDialPlugin::isContainer() const
    65. {
    66. return false;
    67. }
    68.  
    69. QString speedDialPlugin::domXml() const
    70. {
    71. return QLatin1String("<widget class=\"speedDial\" name=\"speedDial\">\n</widget>\n");
    72.  
    73. }
    74.  
    75. QString speedDialPlugin::includeFile() const
    76. {
    77. return QLatin1String("hh.h");
    78. }
    79.  
    80. Q_EXPORT_PLUGIN2(speeddialplugin, speedDialPlugin)
    To copy to clipboard, switch view to plain text mode 

    qtSvgDialGauge.h
    Qt Code:
    1. /*
    2.  
    3. */
    4.  
    5. #ifndef QT_SVG_DIAL_GAUGE
    6. #define QT_SVG_DIAL_GAUGE
    7. #include <QtGui/QWidget>
    8. #include <Qt>
    9. #include <QtCore/QPair>
    10. #include <QtDesigner/QDesignerExportWidget>
    11.  
    12. class QtSvgPixmapCache;
    13.  
    14. class QDESIGNER_WIDGET_EXPORT QtSvgDialGauge : public QWidget
    15. {
    16. Q_OBJECT
    17. Q_PROPERTY(QString skin READ skin WRITE setSkin)
    18. Q_PROPERTY(int minimum READ minimum WRITE setMinimum)
    19. Q_PROPERTY(int maximum READ maximum WRITE setMaximum)
    20. Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle)
    21. Q_PROPERTY(qreal endAngle READ endAngle WRITE setEndAngle)
    22. public:
    23. explicit QtSvgDialGauge(QWidget * parent = 0);
    24. ~QtSvgDialGauge();
    25.  
    26. void setSkin(const QString& skin);
    27. QString skin() const;
    28.  
    29.  
    30. void setMinimum(int minimum);
    31. void setMaximum(int maximum);
    32. void setNeedleOrigin(qreal x, qreal y);
    33. void setStartAngle(qreal angle);
    34. void setEndAngle(qreal angle);
    35.  
    36. int value() const;
    37. int minimum() const;
    38. int maximum() const;
    39. qreal needleOriginX() const;
    40. qreal needleOriginY() const;
    41. qreal startAngle() const;
    42. qreal endAngle() const;
    43.  
    44. virtual QSize minimumSizeHint() const;
    45. virtual QSize sizeHint() const;
    46. void setShowOverlay(bool);
    47.  
    48. public slots:
    49. void setValue(int value);
    50.  
    51. private:
    52. void init();
    53. QRectF availableRect(QtSvgPixmapCache * renderObject) const;
    54.  
    55. QtSvgPixmapCache* m_backgroundRenderer;
    56. QtSvgPixmapCache* m_needleShadowRenderer;
    57. QSvgRenderer* m_needleRenderer;
    58. QRectF availableRect(QSvgRenderer * renderObject) const;
    59. QtSvgPixmapCache* m_overlayRenderer;
    60. /** minimum possible value **/
    61. int m_minimum;
    62. /** maximum possible value **/
    63. int m_maximum;
    64. /** actual value **/
    65. int m_value;
    66. /** smallest start angle **/
    67. qreal m_startAngle;
    68. /** highest end angle **/
    69. qreal m_endAngle;
    70. /** position x of needle **/
    71. qreal m_originX;
    72. /** position y of needle **/
    73. qreal m_originY;
    74. bool m_showOverlay;
    75.  
    76. /** name of actual skin **/
    77. QString m_skin;
    78. protected:
    79. void paintEvent(QPaintEvent * event);
    80. };
    81.  
    82. #endif // QT_SVG_DIAL_GAUGE
    To copy to clipboard, switch view to plain text mode 

    qtSvgDialGauge.cpp
    Qt Code:
    1. /*
    2.  
    3. */
    4. #include <QtGui/QPainter>
    5. #include <QtSvg/QSvgRenderer>
    6.  
    7. #include "qtsvgdialgauge.h"
    8.  
    9. #include "qtsvgpixmapcache.h"
    10.  
    11. /*!
    12.  
    13.   \class QtSvgDialGauge qtsvgdialgauge.h
    14.  
    15.  
    16.   \code
    17.  
    18.   // Create a QtSvgDialGauge
    19.   QWidget * widget = new QWidget(this)
    20.   QtSvgDialGauge * gauge = new QtSvgDialGauge(widget);
    21.   gauge->setSkin("Beryl");
    22.   widget->addWidget(gauge);
    23.   widget->show();
    24.   \endcode
    25.  
    26. /*!
    27.   Constructor of the widget with \p parent as
    28.   Parent.
    29. */
    30. QtSvgDialGauge::QtSvgDialGauge(QWidget * parent)
    31. : QWidget(parent),
    32. m_minimum(0),
    33. m_maximum(100),
    34. m_value(0),
    35. m_startAngle(0),
    36. m_endAngle(100),
    37. m_originX(0.5),
    38. m_originY(0.5),
    39. m_showOverlay(true)
    40. {
    41. init();
    42. setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
    43. }
    44.  
    45. /*!
    46.   Destructor
    47. */
    48. QtSvgDialGauge::~QtSvgDialGauge()
    49. {
    50. }
    51.  
    52.  
    53.  
    54. /*.....
    55. ......
    56. .....
    57. .....
    58. .....
    59. .....*/
    60. }
    To copy to clipboard, switch view to plain text mode 

    qtSvgPixmapCache.h
    Qt Code:
    1. /*
    2.  
    3. */
    4.  
    5.  
    6. #ifndef QT_SVG_PIXMAP_CACHE
    7. #define QT_SVG_PIXMAP_CACHE
    8.  
    9. #include <QtCore/QSizeF>
    10. #include <Qt>
    11. #include <QObject>
    12. #include <QtDesigner/QDesignerExportWidget>
    13.  
    14.  
    15. class QPainter;
    16. class QString;
    17. class QRectF;
    18.  
    19. class QtSvgPixmapCachePrivate;
    20.  
    21. class QDESIGNER_WIDGET_EXPORT QtSvgPixmapCache : public QObject
    22. {
    23. Q_OBJECT
    24.  
    25. public:
    26. QtSvgPixmapCache(QObject* parent = NULL);
    27.  
    28. #endif // QT_SVG_PIXMAP_CACHE
    To copy to clipboard, switch view to plain text mode 

    qtSvgPixmapCache.cpp
    Qt Code:
    1. /*
    2. ....
    3. ....
    4. ...*/
    To copy to clipboard, switch view to plain text mode 

  2. #2
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Widget doesn t show.

    How did you implement sizeHint()?
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  3. #3
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default Re: Custom Widget doesn t show.

    /*!
    \internal
    \overload
    Set default size hint. Can be changed at runtime.
    */
    QSize QtSvgDialGauge::sizeHint() const
    {
    return QSize(400, 400);
    }

  4. #4
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Widget doesn t show.

    And the paintEvent()?
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  5. #5
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default

    Qt Code:
    1. /*!
    2.   \internal
    3.   \overload
    4.   Overloaded paint event to draw the QtSvgDialGauge components
    5. */
    6. void QtSvgDialGauge::paintEvent(QPaintEvent * event)
    7. {
    8. Q_UNUSED(event);
    9. QPainter painter(this);
    10.  
    11. QRectF targetRect;
    12.  
    13. qreal angleSpan = m_endAngle - m_startAngle;
    14. qreal valueSpan = m_maximum - m_minimum;
    15. qreal rotate = (m_value - m_minimum) / valueSpan * angleSpan + m_startAngle;
    16.  
    17. // draw background
    18. targetRect = availableRect(m_backgroundRenderer);
    19. painter.translate((width() - targetRect.width()) / 2.0, (height() - targetRect.height()) / 2.0);
    20. painter.save();
    21.  
    22. m_backgroundRenderer->render(&painter, targetRect);
    23.  
    24. targetRect = availableRect(m_needleRenderer);
    25. targetRect.moveTopLeft(QPoint(-targetRect.width() * m_originX,
    26. -targetRect.height() * m_originY));
    27.  
    28. // move origin to center of widget and rotate for the needle
    29. painter.translate(targetRect.width() * m_originX,
    30. targetRect.height() * m_originY);
    31.  
    32. // draw needle shadow with offset x=2, y=4
    33. painter.save();
    34. painter.translate(2, 4);
    35. painter.rotate(rotate);
    36. m_needleShadowRenderer->render(&painter, targetRect);
    37.  
    38. // draw needle
    39. painter.restore();
    40. painter.rotate(rotate);
    41. m_needleRenderer->render(&painter, targetRect);
    42.  
    43. painter.restore();
    44. if (m_showOverlay) {
    45. // draw overlay
    46. targetRect = availableRect(m_overlayRenderer);
    47. m_overlayRenderer->render(&painter, targetRect);
    48. }
    49. }
    To copy to clipboard, switch view to plain text mode 

    I have been testing the widget localy i.e. not as a plugin and then it works fine. So it should be any problem with widget code as I see. It has to be the plugin or how i setup the .pro file or something.
    Last edited by wysota; 11th March 2010 at 09:06.

  6. #6
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Widget doesn t show.

    Quote Originally Posted by Frej View Post
    I have been testing the widget localy i.e. not as a plugin and then it works fine. So it should be any problem with widget code as I see. It has to be the plugin or how i setup the .pro file or something.
    Hmm... earlier you said it worked fine when previewing the widget in Designer but not after compiling the code. Or at least so I understood... Can you say again when it works and when it doesn't work? And also how the widget works in general (mainly where does it get data from for the renderer).
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  7. #7
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default Re: Custom Widget doesn t show.

    The widgetplugin appears in the widgetbox in designer/form editor and i can drag it to my canvas and it is displayed as it should. I can connect signals and slot to it. Butwhen I hit preview in designer or when I compile the application the widget doesn´t show anymore. If I don´t use it as a plugin but just includes the widget code I can manually (in code) create an instance of my widget and it works fine. So it seems to be the plugin that is the problem. My widget uses vector graphics (svg) images that are painted on top of each other with specified relations. So svg files are loaded and ordered in a structured way and then a special renderer takes care of rendering for different platforms and so....

    pixmapcache.h
    Qt Code:
    1. #include "qtsvgpixmapcache.h"
    2.  
    3. #include <QtGui/QPainter>
    4. #include <QtSvg/QSvgRenderer>
    5.  
    6. #if defined(Q_WS_HILDON) && (QT_VERSION < 0x040500)
    7. # define QT_MAEMO_XRENDER_ALPHA_BUG
    8. # warning Using workaround for 'XRender and QPixmap with alpha' drawing bug
    9. #endif
    10.  
    11. class QtSvgPixmapCachePrivate
    12. {
    13. public:
    14. void updatePixmapCache(const QSizeF& size);
    15.  
    16. public:
    17. QSvgRenderer svgRenderer;
    18. #ifdef QT_MAEMO_XRENDER_ALPHA_BUG
    19. QImage pixmapCache;
    20. #else
    21. QPixmap pixmapCache;
    22. #endif
    23. };
    24.  
    25. QtSvgPixmapCache::QtSvgPixmapCache(QObject* parent) : QObject(parent)
    26. , d(new QtSvgPixmapCachePrivate())
    27. {
    28. }
    29.  
    30. QtSvgPixmapCache::QtSvgPixmapCache(const QString& url)
    31. : d(new QtSvgPixmapCachePrivate())
    32. {
    33. load(url);
    34. }
    35.  
    36. QtSvgPixmapCache::~QtSvgPixmapCache()
    37. {
    38. delete d;
    39. }
    40.  
    41. bool QtSvgPixmapCache::load(const QString& url)
    42. {
    43. d->svgRenderer.load(url);
    44. #ifdef QT_MAEMO_XRENDER_ALPHA_BUG
    45. d->pixmapCache = QImage();
    46. #else
    47. d->pixmapCache = QPixmap();
    48. #endif
    49. return d->pixmapCache.isNull();
    50. }
    51.  
    52. bool QtSvgPixmapCache::isValid() const
    53. {
    54. return d->svgRenderer.isValid();
    55. }
    56.  
    57. void QtSvgPixmapCache::render(QPainter* painter, const QRectF& bounds)
    58. {
    59. if (!d->svgRenderer.isValid()) {
    60. return;
    61. }
    62.  
    63. if (d->pixmapCache.isNull() || bounds.size().toSize() != d->pixmapCache.size()) {
    64. d->updatePixmapCache(bounds.size());
    65. }
    66.  
    67. #ifdef QT_MAEMO_XRENDER_ALPHA_BUG
    68. painter->drawImage(bounds.topLeft(), d->pixmapCache);
    69. #else
    70. painter->drawPixmap(bounds.topLeft(), d->pixmapCache);
    71. #endif
    72. }
    73.  
    74. QSize QtSvgPixmapCache::defaultSize() const
    75. {
    76. return d->svgRenderer.defaultSize();
    77. }
    78.  
    79. void QtSvgPixmapCachePrivate::updatePixmapCache(const QSizeF& size)
    80. {
    81. #ifdef QT_MAEMO_XRENDER_ALPHA_BUG
    82. pixmapCache = QImage(size.toSize(), QImage::Format_ARGB32_Premultiplied);
    83. #else
    84. pixmapCache = QPixmap(size.toSize());
    85. #endif
    86. pixmapCache.fill(Qt::transparent);
    87.  
    88. QPainter painter(&pixmapCache);
    89. svgRenderer.render(&painter);
    90. painter.end();
    91. }
    To copy to clipboard, switch view to plain text mode 

  8. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Widget doesn t show.

    What happens if you compile a standalone program using that widget of yours but not by including the widget files directly into the project but instead by linking with the plugin library? Because the plugin has nothing to do with your application - it is only used by Designer. If you build an application that uses it, you have to link with the code of the widget regardless of the existance of the plugin.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  9. #9
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default Re: Custom Widget doesn t show.

    Yeah I think the linking to my libspeeddial.so is what is going wrong. If I just include LIBS += "/home/frej/qtsdk-2010.01/bin/designer/libspeeddialplugin.so" in my pro file i should be able to use my widget something like this:

    #include "speeddialplugin.h"

    speedDialPlugin *p = new speedDialPlugin();
    QWidget *gauge = p->createWidget(parent);
    setCentralWidget(gauge);
    But this does´t work, I aslo have to add include paths to my speeddialplugin for this to work. I assumed i vould just link to the lib file and it would contain alll logic is that wrong, if not it seem like it is the linking that is not working.

  10. #10
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Widget doesn t show.

    Please explain what "doesn't work" means in this case. You always need the header file, the library itself is not enough (you need Qt header files to use Qt too, right?).
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  11. #11
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default Re: Custom Widget doesn t show.

    If i create a new project and add LIBS += "/home/frej/qtsdk-2010.01/bin/designer/libspeeddialplugin.so" to link to my speeddialplugin. It i then try to write something like this:
    #include "speeddialplugin.h"

    speedDialPlugin *p = new speedDialPlugin();
    QWidget *gauge = p->createWidget(parent);
    setCentralWidget(gauge);
    But this doesn´t work, error: speeddialplugin.h: No such file or directory.

    So I have to add includepaths to my speeddialplugin.h, INCLUDEPATH += "/home/frej/Documents/Qt Dev/customDial". Then it works fine to create an instance of my widget like
    speedDialPlugin *p = new speedDialPlugin();
    QWidget *gauge = p->createWidget(parent);
    setCentralWidget(gauge);



    But if instead by adding the widget by code, but drag n drop from the widget box instead, then I get the problem with the widget not showing when I compile or hit preview.
    (Thanx for beeing patient)

  12. #12
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Widget doesn t show.

    But why include the plugin header? You only need the widget header. If you can't see the widget in the compiled code then inspect the code created by uic (ui_speeddial.h) to see if it creates your widget properly. If it does then the problem is in your widget code. Make sure the paint event is called and that the size of the widget is valid (during that paint event). Once you verify that we can continue looking for problems.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  13. #13
    Join Date
    Feb 2010
    Posts
    30
    Qt products
    Qt4 Qt/Embedded
    Platforms
    Windows

    Default Re: Custom Widget doesn t show.

    Found the problem now. Since i didn´t set a skin in my constructor (to leave it to the user) no background image where set, so the widget was there but it didn´t contain any graphic. Sorry for bothering you with this silly problem. On the upside i think I learnt alot on how plugins work.

Similar Threads

  1. QMainWindow and custom widget doesn't show
    By Peppy in forum Qt Programming
    Replies: 9
    Last Post: 26th December 2009, 15:09
  2. Replies: 6
    Last Post: 23rd December 2009, 10:45
  3. How to show custom widget in TreeView's cell :-/
    By WolfMM in forum Qt Programming
    Replies: 2
    Last Post: 7th July 2007, 11:16
  4. Replies: 12
    Last Post: 28th April 2007, 20:25
  5. Replies: 12
    Last Post: 15th February 2006, 10:46

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.