Большинство свойств и методов компонентов VCL и CLX идентичны. А существующие различия вызваны необходимостью использования специальных объектов — widget и особенностями представления визуальных элементов в Linux.
Базовые классы CLX — TControl и Twidgetcontrol для обеспечения прорисовки обращаются к динамической библиотеке Qt через заголовочный файл Qt.pas.
Таким образом, разработчик избавлен от необходимости работы с графическим интерфейсом Linux на низком уровне.
Для компонента CLX существует свойство
property Handle: QWidgetH;
которое является указателем на связанный объект widget и позволяет вызывать его методы напрямую.
Если экземпляр widget не создан, метод
procedure CreateHandle; virtual;
не только создает и инициализирует widget, но и устанавливает указатель Handle, создает объекты-перехватчики (см. ниже) и задает настройки по умолчанию для этого визуального компонента. При необходимости в классах-потомках метод CreateHandle перекрывается и в него добавляется новая функциональность.
Уничтожение созданного widget осуществляется методом
procedure DestroyHandle;
который уничтожает все дочерние widget и объекты-перехватчики, а также обнуляет свойства Handle И Hooks.
При необходимости для простого создания и инициализации widget можно использовать метод
procedure CreateWidget; virtual;
который сделает это, вызвав внешнюю функцию Qwidget_Create, и метод
procedure InitWidget; virtual;
который определяет визуальные параметры widget.
Также в классах CLX доступен указатель на родительский widget за счет использования свойства
property ParentWidget: QWidgetH;
Если это свойство не определено, можно использовать свойство
property ChildHandle: QWidgetH;
родительского класса, например, таким образом:
if Not Assigned(ParentWidget) then if Assigned(Parent) then
Result := Parent.ChildHandle;
В классах CLX иначе реализована обработка событий. В Linux все события делятся на два вида — системные и события widget. Системные события обрабатываются процедурой — аналогом процедуры wndProc для компонентов VCL.