Difference between revisions of "Gambas/libraries/gb.qt"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search
(post-move tidying)
(→‎Events: notes; future-link updates)
Line 9: Line 9:
 
* '''Deactivate'''() is called whenever the form loses focus
 
* '''Deactivate'''() is called whenever the form loses focus
 
* nothing seems to trigger '''GotFocus'''() and '''LostFocus'''(); perhaps these are only used for controls (suggests the inheritance structure isn't set up quite right)
 
* nothing seems to trigger '''GotFocus'''() and '''LostFocus'''(); perhaps these are only used for controls (suggests the inheritance structure isn't set up quite right)
 +
* '''Unknown''':
 +
** '''Arrange'''()
 +
** '''BeforeArrange'''() - presumably related to Arrange()
  
 
Unfortunately, there doesn't seem to be any event which is called exactly ''once'', ''after'' the form is visible; the best [[kluge]] seems to be to put any such code in the '''Activate''' event and check/set a flag so it only gets called once.
 
Unfortunately, there doesn't seem to be any event which is called exactly ''once'', ''after'' the form is visible; the best [[kluge]] seems to be to put any such code in the '''Activate''' event and check/set a flag so it only gets called once.
 
===drag-drop events===
 
===drag-drop events===
 
Some rules which seem to apply:
 
Some rules which seem to apply:
* The [[gb.qt.Mouse|Mouse]] location (Mouse.X and Mouse.Y) is not updated while the mouse is dragging anything; you get the mouse's location while dragging from the [[gb.qt.Drag|Drag]] object.
+
* The {{l/sub|Mouse}} location (Mouse.X and Mouse.Y) is not updated while the mouse is dragging anything; you get the mouse's location while dragging from the {{l/sub|Drag}} object.
 
* Normal mouse events are also not triggered while the mouse is dragging anything
 
* Normal mouse events are also not triggered while the mouse is dragging anything
 
* In order for any element (form or control) to receive mouse events while the mouse is dragging anything, the element's '''Drop''' property must be set to TRUE
 
* In order for any element (form or control) to receive mouse events while the mouse is dragging anything, the element's '''Drop''' property must be set to TRUE

Revision as of 12:41, 26 April 2015

About

gb.qt is a Gambas library which provides functions for displaying and handling forms; it uses the Qt graphical library.

This is a growing seedling article. You can help HTYP by watering it.

There is also a gb.gtk component which does much the same but using the GTK+ graphical library, but it appears to be less fully implemented.

Events

form display events

  • Open() and Show() are both called before the form has displayed
  • Activate() is called when the form gets focus (title bar changes color, in most color schemes)
  • Enter() is called whenever the mouse enters the drawing region of the form (menu bar & frame aren't included)
  • Leave() is called whenever the mouse leaves the drawing region of the form
  • Deactivate() is called whenever the form loses focus
  • nothing seems to trigger GotFocus() and LostFocus(); perhaps these are only used for controls (suggests the inheritance structure isn't set up quite right)
  • Unknown:
    • Arrange()
    • BeforeArrange() - presumably related to Arrange()

Unfortunately, there doesn't seem to be any event which is called exactly once, after the form is visible; the best kluge seems to be to put any such code in the Activate event and check/set a flag so it only gets called once.

drag-drop events

Some rules which seem to apply:

  • The Mouse location (Mouse.X and Mouse.Y) is not updated while the mouse is dragging anything; you get the mouse's location while dragging from the Drag object.
  • Normal mouse events are also not triggered while the mouse is dragging anything
  • In order for any element (form or control) to receive mouse events while the mouse is dragging anything, the element's Drop property must be set to TRUE
  • To get continuous updates on the mouse's movements, implement (control).DragMove and (form).DragMove. The control will only receive events while the mouse is inside it; the form will only receive events while the mouse is not inside another drop-enabled control. Use the form events to detect when the mouse has left the control area.

Links