Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / qt / 2007-07

V1.40 and other problems

6 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Павел Ишенин

Hello, Qt-lazarus

I have some problems with qt development. First problem with compiled bindings. I need them for windows, but they are only for linux. Can anybody provide windows binaries?

Second problem are still with QStyleOptions. I need some way to set variables of that class (I really dont know what is the variables of class and how they differ from properties).

Den, if you or someone else can help me, please do. We have about month before next lazarus release.

Best regards,
Paul Ishenin.

Felipe Monteiro de Carvalho
to Павел Ишенин
????? ?????? wrote
I have some problems with qt development. First problem with compiled bindings. I need them for windows, but they are only for linux. Can anybody provide windows binaries?

First some problems with the bindings need to be solved.

Second problem are still with QStyleOptions. I need some way to set variables of that class (I really dont know what is the variables of class and how they differ from properties).

http://doc.trolltech.com/4.3/qstyleoption.html

Normally Qt has properties instead of variables. This looks like a break on their usual way to do things.

Support for this would need to be added on the bindings.

Felipe Monteiro de Carvalho
Павел Ишенин
to Felipe Monteiro de Carvalho
Felipe Monteiro de Carvalho wrote 9 lines
On 7/5/07, ????? ?????? wrote: > I have some problems with qt development. First problem with compiled > bindings. I need them for windows, but they are only for linux. Can > anybody provide windows binaries? > First some problems with the bindings need to be solved.

I understand this, but if you make updates of qt43.pas I suppose there should be way to download apropriate dll to develop from windows ;)

Show quoted text 12 lines
> Second problem are still with QStyleOptions. I need some way to set > variables of that class (I really dont know what is the variables of > class and how they differ from properties). > http://doc.trolltech.com/4.3/qstyleoption.html Normally Qt has properties instead of variables. This looks like a break on their usual way to do things. Support for this would need to be added on the bindings.

Yes, I know and I am asking Den to add needed bindings while we have time before release. I had plans to start theme support on all important widgetsets. And now only qt is missed in this list.

Best regards,
Paul Ishenin.

Den Jean
to Павел Ишенин: Hello, Qt-lazarus I have some problems with qt development. First problem with compiled…
pm ????? ?????? wrote
Second problem are still with QStyleOptions. I need some way to set variables of that class (I really dont know what is the variables of class and how they differ from properties).

http://www.lazarus.freepascal.org/pipermail/qt/2007-June/000309.html

I already answered how and asked for sample code to test the typecasting. This is an enormous work: manually translate C structs into binary equivalent pascal record types. I would start with the ones you plan to use.

I also asked some code to see what you are up to. Do you realize that some stuff needs method overriding (no events available). Will you need method overriding of QStyle? Currently the binding does not support this in general (automatically generate this). For stuff like this a manually created class can be incorporated. But again, what are you up to, what do you need?

There are 22 virtual methods to override. Any priorities :-)

grep -i virtual src/gui/styles/qstyle.h

    virtual ~QStyle();
    virtual void polish(QWidget *);
    virtual void unpolish(QWidget *);
    virtual void polish(QApplication *);
    virtual void unpolish(QApplication *);
    virtual void polish(QPalette &);
    virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r,
    virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const;
    virtual void drawItemText(QPainter *painter, const QRect &rect,
    virtual void drawItemPixmap(QPainter *painter, const QRect &rect,
    virtual QPalette standardPalette() const;
    virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
    virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p,
    virtual QRect subElementRect(SubElement subElement, const QStyleOption *option,
    virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p,
    virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt,
    virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt,
    virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = 0,
    virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt,
    virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = 0,
    virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = 0,
    virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,

And I already copied the definitions of C structs (the non method part of the classes) in preparation of the manual translation.
Any priorities ?

class Q_GUI_EXPORT QStyleOption
    int version;
    int type;
    QStyle::State state;
    Qt::LayoutDirection direction;
    QRect rect;
    QFontMetrics fontMetrics;
    QPalette palette;
class Q_GUI_EXPORT QStyleOptionFocusRect : public QStyleOption
    QColor backgroundColor;
class Q_GUI_EXPORT QStyleOptionFrame : public QStyleOption
    int lineWidth;
    int midLineWidth;
class Q_GUI_EXPORT QStyleOptionFrameV2 : public QStyleOptionFrame
    FrameFeatures features;
class Q_GUI_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
    int lineWidth;
    int midLineWidth;
    QTabBar::Shape shape;
    QSize tabBarSize;
    QSize rightCornerWidgetSize;
    QSize leftCornerWidgetSize;
class Q_GUI_EXPORT QStyleOptionTabBarBase : public QStyleOption
    QTabBar::Shape shape;
    QRect tabBarRect;
    QRect selectedTabRect;
class Q_GUI_EXPORT QStyleOptionHeader : public QStyleOption
    int section;
    QString text;
    Qt::Alignment textAlignment;
    QIcon icon;
    Qt::Alignment iconAlignment;
    SectionPosition position;
    SelectedPosition selectedPosition;
    SortIndicator sortIndicator;
    Qt::Orientation orientation;
class Q_GUI_EXPORT QStyleOptionButton : public QStyleOption
    ButtonFeatures features;
    QString text;
    QIcon icon;
    QSize iconSize;
class Q_GUI_EXPORT QStyleOptionTab : public QStyleOption
    QTabBar::Shape shape;
    QString text;
    QIcon icon;
    int row;
    TabPosition position;
    SelectedPosition selectedPosition;
    CornerWidgets cornerWidgets;
class Q_GUI_EXPORT QStyleOptionTabV2 : public QStyleOptionTab
    QSize iconSize;
class Q_GUI_EXPORT QStyleOptionToolBar : public QStyleOption
    ToolBarPosition positionOfLine; // The toolbar line position
    ToolBarPosition positionWithinLine; // The position within a toolbar
    Qt::ToolBarArea toolBarArea; // The toolbar docking area
    ToolBarFeatures features;
    int lineWidth;
    int midLineWidth;
class Q_GUI_EXPORT QStyleOptionProgressBar : public QStyleOption
    int minimum;
    int maximum;
    int progress;
    QString text;
    Qt::Alignment textAlignment;
    bool textVisible;
class Q_GUI_EXPORT QStyleOptionProgressBarV2 : public QStyleOptionProgressBar
    Qt::Orientation orientation;
    bool invertedAppearance;
    bool bottomToTop;
class Q_GUI_EXPORT QStyleOptionMenuItem : public QStyleOption
    MenuItemType menuItemType;
    CheckType checkType;
    bool checked;
    bool menuHasCheckableItems;
    QRect menuRect;
    QString text;
    QIcon icon;
    int maxIconWidth;
    int tabWidth;
    QFont font;
class Q_GUI_EXPORT QStyleOptionQ3ListViewItem : public QStyleOption
    Q3ListViewItemFeatures features;
    int height;
    int totalHeight;
    int itemY;
    int childCount;
class Q_GUI_EXPORT QStyleOptionQ3DockWindow : public QStyleOption
    bool docked;
    bool closeEnabled;
class Q_GUI_EXPORT QStyleOptionDockWidget : public QStyleOption
    QString title;
    bool closable;
    bool movable;
    bool floatable;
class Q_GUI_EXPORT QStyleOptionDockWidgetV2 : public QStyleOptionDockWidget
    bool verticalTitleBar;
class Q_GUI_EXPORT QStyleOptionViewItem : public QStyleOption
    Qt::Alignment displayAlignment;
    Qt::Alignment decorationAlignment;
    Qt::TextElideMode textElideMode;
    Position decorationPosition;
    QSize decorationSize;
    QFont font;
    bool showDecorationSelected;
class Q_GUI_EXPORT QStyleOptionViewItemV2 : public QStyleOptionViewItem
    ViewItemFeatures features;
class Q_GUI_EXPORT QStyleOptionViewItemV3 : public QStyleOptionViewItemV2
    QLocale locale;
    const QWidget *widget;
class Q_GUI_EXPORT QStyleOptionToolBox : public QStyleOption
    QString text;
    QIcon icon;
class Q_GUI_EXPORT QStyleOptionToolBoxV2 : public QStyleOptionToolBox
    TabPosition position;
    SelectedPosition selectedPosition;
class Q_GUI_EXPORT QStyleOptionRubberBand : public QStyleOption
    QRubberBand::Shape shape;
    bool opaque;
class Q_GUI_EXPORT QStyleOptionComplex : public QStyleOption
    QStyle::SubControls subControls;
    QStyle::SubControls activeSubControls;
class Q_GUI_EXPORT QStyleOptionSlider : public QStyleOptionComplex
    Qt::Orientation orientation;
    int minimum;
    int maximum;
    QSlider::TickPosition tickPosition;
    int tickInterval;
    bool upsideDown;
    int sliderPosition;
    int sliderValue;
    int singleStep;
    int pageStep;
    qreal notchTarget;
    bool dialWrapping;
class Q_GUI_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
    QAbstractSpinBox::ButtonSymbols buttonSymbols;
    QAbstractSpinBox::StepEnabled stepEnabled;
    bool frame;
class Q_GUI_EXPORT QStyleOptionQ3ListView : public QStyleOptionComplex
    QList<QStyleOptionQ3ListViewItem> items;
    QPalette viewportPalette;
    QPalette::ColorRole viewportBGRole;
    int sortColumn;
    int itemMargin;
    int treeStepSize;
    bool rootIsDecorated;
class Q_GUI_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
    ToolButtonFeatures features;
    QIcon icon;
    QSize iconSize;
    QString text;
    Qt::ArrowType arrowType;
    Qt::ToolButtonStyle toolButtonStyle;
    QPoint pos;
    QFont font;
class Q_GUI_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
    bool editable;
    QRect popupRect;
    bool frame;
    QString currentText;
    QIcon currentIcon;
    QSize iconSize;
class Q_GUI_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
    QString text;
    QIcon icon;
    int titleBarState;
    Qt::WindowFlags titleBarFlags;
class Q_GUI_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
    QStyleOptionFrameV2::FrameFeatures features;
    QString text;
    Qt::Alignment textAlignment;
    QColor textColor;
    int lineWidth;
    int midLineWidth;
class Q_GUI_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
    Qt::Corner corner;
class Q_GUI_EXPORT QStyleOptionGraphicsItem : public QStyleOption
    QRectF exposedRect;
    QMatrix matrix;
    qreal levelOfDetail;
class Q_GUI_EXPORT QStyleHintReturn {
    int version;
    int type;
class Q_GUI_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
    QRegion region;
class Q_GUI_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
    QVariant variant;

regards,

Den Jean

Павел Ишенин
to Den Jean
Den Jean wrote 14 lines
On Thursday 05 July 2007 12:28:53 pm ????? ?????? wrote: > Second problem are still with QStyleOptions. I need some way to set > variables of that class (I really dont know what is the variables of > class and how they differ from properties). > http://www.lazarus.freepascal.org/pipermail/qt/2007-June/000309.html I already answered how and asked for sample code to test the typecasting. This is an enormous work: manually translate C structs into binary equivalent pascal record types. I would start with the ones you plan to use.

Sorry, I have no non LCL program to test. I even dont know how to do it, but I will try.

I also asked some code to see what you are up to. Do you realize that some stuff needs method overriding (no events available). Will you need method overriding of QStyle?

I dont know without working example, but I suppose that yes.

Show quoted text 30 lines
Currently the binding does not support this in general (automatically generate this). For stuff like this a manually created class can be incorporated. But again, what are you up to, what do you need? There are 22 virtual methods to override. Any priorities :-) grep -i virtual src/gui/styles/qstyle.h virtual ~QStyle(); virtual void polish(QWidget *); virtual void unpolish(QWidget *); virtual void polish(QApplication *); virtual void unpolish(QApplication *); virtual void polish(QPalette &); virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual void drawItemText(QPainter *painter, const QRect &rect, virtual void drawItemPixmap(QPainter *painter, const QRect &rect, virtual QPalette standardPalette() const; virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, virtual QRect subElementRect(SubElement subElement, const QStyleOption *option, virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = 0, virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = 0, virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,

Priorities are:
drawControl
drawComplexControl
drawPrimitive
drawItemText

Show quoted text 193 lines
And I already copied the definitions of C structs (the non method part of the classes) in preparation of the manual translation. Any priorities ? class Q_GUI_EXPORT QStyleOption int version; int type; QStyle::State state; Qt::LayoutDirection direction; QRect rect; QFontMetrics fontMetrics; QPalette palette; class Q_GUI_EXPORT QStyleOptionFocusRect : public QStyleOption QColor backgroundColor; class Q_GUI_EXPORT QStyleOptionFrame : public QStyleOption int lineWidth; int midLineWidth; class Q_GUI_EXPORT QStyleOptionFrameV2 : public QStyleOptionFrame FrameFeatures features; class Q_GUI_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption int lineWidth; int midLineWidth; QTabBar::Shape shape; QSize tabBarSize; QSize rightCornerWidgetSize; QSize leftCornerWidgetSize; class Q_GUI_EXPORT QStyleOptionTabBarBase : public QStyleOption QTabBar::Shape shape; QRect tabBarRect; QRect selectedTabRect; class Q_GUI_EXPORT QStyleOptionHeader : public QStyleOption int section; QString text; Qt::Alignment textAlignment; QIcon icon; Qt::Alignment iconAlignment; SectionPosition position; SelectedPosition selectedPosition; SortIndicator sortIndicator; Qt::Orientation orientation; class Q_GUI_EXPORT QStyleOptionButton : public QStyleOption ButtonFeatures features; QString text; QIcon icon; QSize iconSize; class Q_GUI_EXPORT QStyleOptionTab : public QStyleOption QTabBar::Shape shape; QString text; QIcon icon; int row; TabPosition position; SelectedPosition selectedPosition; CornerWidgets cornerWidgets; class Q_GUI_EXPORT QStyleOptionTabV2 : public QStyleOptionTab QSize iconSize; class Q_GUI_EXPORT QStyleOptionToolBar : public QStyleOption ToolBarPosition positionOfLine; // The toolbar line position ToolBarPosition positionWithinLine; // The position within a toolbar Qt::ToolBarArea toolBarArea; // The toolbar docking area ToolBarFeatures features; int lineWidth; int midLineWidth; class Q_GUI_EXPORT QStyleOptionProgressBar : public QStyleOption int minimum; int maximum; int progress; QString text; Qt::Alignment textAlignment; bool textVisible; class Q_GUI_EXPORT QStyleOptionProgressBarV2 : public QStyleOptionProgressBar Qt::Orientation orientation; bool invertedAppearance; bool bottomToTop; class Q_GUI_EXPORT QStyleOptionMenuItem : public QStyleOption MenuItemType menuItemType; CheckType checkType; bool checked; bool menuHasCheckableItems; QRect menuRect; QString text; QIcon icon; int maxIconWidth; int tabWidth; QFont font; class Q_GUI_EXPORT QStyleOptionQ3ListViewItem : public QStyleOption Q3ListViewItemFeatures features; int height; int totalHeight; int itemY; int childCount; class Q_GUI_EXPORT QStyleOptionQ3DockWindow : public QStyleOption bool docked; bool closeEnabled; class Q_GUI_EXPORT QStyleOptionDockWidget : public QStyleOption QString title; bool closable; bool movable; bool floatable; class Q_GUI_EXPORT QStyleOptionDockWidgetV2 : public QStyleOptionDockWidget bool verticalTitleBar; class Q_GUI_EXPORT QStyleOptionViewItem : public QStyleOption Qt::Alignment displayAlignment; Qt::Alignment decorationAlignment; Qt::TextElideMode textElideMode; Position decorationPosition; QSize decorationSize; QFont font; bool showDecorationSelected; class Q_GUI_EXPORT QStyleOptionViewItemV2 : public QStyleOptionViewItem ViewItemFeatures features; class Q_GUI_EXPORT QStyleOptionViewItemV3 : public QStyleOptionViewItemV2 QLocale locale; const QWidget *widget; class Q_GUI_EXPORT QStyleOptionToolBox : public QStyleOption QString text; QIcon icon; class Q_GUI_EXPORT QStyleOptionToolBoxV2 : public QStyleOptionToolBox TabPosition position; SelectedPosition selectedPosition; class Q_GUI_EXPORT QStyleOptionRubberBand : public QStyleOption QRubberBand::Shape shape; bool opaque; class Q_GUI_EXPORT QStyleOptionComplex : public QStyleOption QStyle::SubControls subControls; QStyle::SubControls activeSubControls; class Q_GUI_EXPORT QStyleOptionSlider : public QStyleOptionComplex Qt::Orientation orientation; int minimum; int maximum; QSlider::TickPosition tickPosition; int tickInterval; bool upsideDown; int sliderPosition; int sliderValue; int singleStep; int pageStep; qreal notchTarget; bool dialWrapping; class Q_GUI_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex QAbstractSpinBox::ButtonSymbols buttonSymbols; QAbstractSpinBox::StepEnabled stepEnabled; bool frame; class Q_GUI_EXPORT QStyleOptionQ3ListView : public QStyleOptionComplex QList<QStyleOptionQ3ListViewItem> items; QPalette viewportPalette; QPalette::ColorRole viewportBGRole; int sortColumn; int itemMargin; int treeStepSize; bool rootIsDecorated; class Q_GUI_EXPORT QStyleOptionToolButton : public QStyleOptionComplex ToolButtonFeatures features; QIcon icon; QSize iconSize; QString text; Qt::ArrowType arrowType; Qt::ToolButtonStyle toolButtonStyle; QPoint pos; QFont font; class Q_GUI_EXPORT QStyleOptionComboBox : public QStyleOptionComplex bool editable; QRect popupRect; bool frame; QString currentText; QIcon currentIcon; QSize iconSize; class Q_GUI_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex QString text; QIcon icon; int titleBarState; Qt::WindowFlags titleBarFlags; class Q_GUI_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex QStyleOptionFrameV2::FrameFeatures features; QString text; Qt::Alignment textAlignment; QColor textColor; int lineWidth; int midLineWidth; class Q_GUI_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex Qt::Corner corner; class Q_GUI_EXPORT QStyleOptionGraphicsItem : public QStyleOption QRectF exposedRect; QMatrix matrix; qreal levelOfDetail; class Q_GUI_EXPORT QStyleHintReturn { int version; int type; class Q_GUI_EXPORT QStyleHintReturnMask : public QStyleHintReturn { QRegion region; class Q_GUI_EXPORT QStyleHintReturnVariant : public QStyleHintReturn { QVariant variant;

Priorities are:

QStyleOption:
  int version;
  QStyle::State state;
  QRect rect;
QStyleOptionButton:
  ButtonFeatures features;

I have no non-LCL test as I said, but you can look at how code will be used. I already commited unit to lazarus svn: lcl\interfaces\qt\qtthemes.pas

Best regards,
Paul Ishenin.

Unknown author
Show quoted text 7 lines
----- Oorspronkelijk bericht ----- > Priorities are: drawControl drawComplexControl drawPrimitive drawItemText

This is rather complex for me to add. I will look into an automatic generator or do some manual c++ coding.

Show quoted text 10 lines
Priorities are: QStyleOption: int version; QStyle::State state; QRect rect; QStyleOptionButton: ButtonFeatures features;

thanks for the feedback.
I already created a program to automatically tranlate the structs but the sizes differ. The C classes are not packed. Anyhow I now realize this is a bad idea because it would be C++ compiler dependant. There are 256 fields. Doing it with getters/setters means 512 extra functions. Too many. I would prefer that I only add those you request and I will try to react promptly on each request.

I could also create a C++ programs that calculates the offsets of every field and stores these in constants. This would keep the binding library small and allow access to all fields, but again, it would be compiler dependent. Unless I move initialization of struct member offsets to runtime.

regards,

Den Jean