35 int x;
36 int delta;
37 };
Защищенная и закрытая секции этого класса имеют тот же вид, как и для стандартного виджета Qt.
01 AxBouncer::AxBouncer(QWidget *parent)
02 : QWidget(parent)
03 {
04 ballColor = Qt::blue;
05 ballSpeed = Normal;
06 ballRadius = 15;
07 myTimerId = 0;
08 x = 20;
09 delta = 2;
10 }
Конструктор AxBouncer инициализирует закрытые переменные этого класса.
01 void AxBouncer::setColor(const QColor &newColor)
02 {
03 if (newColor != ballColor &&
04 requestPropertyChange("color")) {
05 ballColor = newColor;
06 update;
07 propertyChanged("color");
08 }
09 }
Функция
Необычной частью являются вызовы функций
Устанавливающие свойства функции
Осталось рассмотреть еще одну интересную функцию—член класса
QAxAggregated *AxBouncer::createAggregate
{
return new ObjectSafetyImpl;
}
Функция
Ниже приводится определение класса, которое реализует интерфейс
01 class ObjectSafetyImpl : public QAxAggregated, public IObjectSafety
02 {
03 public:
04 long queryInterface(const QUuid &iid, void **iface);
05 QAXAGG_IUNKNOWN
06 HRESULT WINAPI GetInterfaceSafetyOptions(REFIID riid,
07 DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions);
08 HRESULT WINAPI SetInterfaceSafetyOptions(REFIID riid,
09 DWORD pdwSupportedOptions, DWORD pdwEnabledOptions);
10 };
Класс
Макрос
01 long ObjectSafetyImpl::queryInterface(const QUuid &iid, void **iface)
02 {
03 *iface = 0;
04 if (iid == IID_IObjectSafety) {
05 *iface = static_cast
06 } else {
07 return E_NOINTERFACE;
08 }
09 AddRef;
10 return S_OK;
11 }