QAxWidget Class
QAxWidget 클래스는 ActiveX 컨트롤을 래핑하는 QWidget 입니다. 더 보기...
헤더: | #include <QAxWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake: | QT += axcontainer |
상속합니다: | QAxBaseWidget 와 QAxBase |
공용 함수
QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
virtual | ~QAxWidget() override |
void | clear() |
virtual QAxAggregated * | createAggregate() |
bool | doVerb(const QString &verb) |
재구현된 공용 함수
virtual QSize | minimumSizeHint() const override |
virtual void | resetControl() override |
virtual QSize | sizeHint() const override |
보호된 함수
virtual bool | createHostWindow(bool initialized) |
bool | createHostWindow(bool initialized, const QByteArray &data) |
virtual bool | translateKeyEvent(int message, int keycode) const |
재구현된 보호 함수
virtual void | changeEvent(QEvent *e) override |
virtual void | connectNotify(const QMetaMethod &signal) override |
virtual bool | initialize(IUnknown **ptr) override |
virtual void | resizeEvent(QResizeEvent *) override |
상세 설명
QAxWidget은 빈 객체로 인스턴스화할 수 있으며, 래핑할 ActiveX 컨트롤의 이름을 지정하거나 ActiveX 컨트롤에 대한 기존 인터페이스 포인터를 사용하여 인스턴스화할 수 있습니다. QAxBase 지원 데이터 유형만 사용하는 ActiveX 컨트롤의 속성, 메서드 및 이벤트는 Qt 속성, 슬롯 및 시그널로 사용할 수 있습니다. 기본 클래스 QAxBase 는 IUnknown
포인터를 통해 ActiveX에 직접 액세스할 수 있는 API를 제공합니다.
QAxWidget은 QWidget 이며 대부분 위젯 계층 구조 및 레이아웃으로 구성하거나 이벤트 필터로 작동하는 등 그대로 사용할 수 있습니다. 표준 위젯 속성(예: enabled )은 지원되지만 팔레트나 글꼴과 같은 주변 속성에 대한 지원을 구현하는 것은 ActiveX 컨트롤에 따라 다릅니다. QAxWidget은 필요한 힌트를 제공하려고 시도합니다.
그러나 마우스 프레스 이벤트나 키 프레스 이벤트와 같은 Qt 전용 이벤트 핸들러를 재구현하여 안정적으로 호출되기를 기대할 수는 없습니다. 임베디드 컨트롤은 QAxWidget을 완전히 커버하며 일반적으로 사용자 인터페이스 자체를 처리합니다. 컨트롤 전용 API를 사용하거나(즉, 컨트롤의 신호를 수신) 창 프로시저 서브클래싱과 같은 표준 COM 기술을 사용합니다.
또한 QAxWidget은 QAxBase, 특히 dynamicCall() 및 querySubObject()에서 대부분의 ActiveX 관련 기능을 상속받습니다.
경고: QAxWidget을 서브클래싱할 수는 있지만 서브클래스에서 Q_OBJECT
매크로를 사용할 수 없으므로(생성된 moc 파일은 컴파일되지 않음) 추가 신호, 슬롯 또는 속성을 추가할 수 없습니다. 이 제한은 런타임에 생성된 메타객체 정보로 인해 발생합니다. 이 문제를 해결하려면 QAxWidget을 QObject 서브클래스의 멤버로 집계하세요.
QAxBase, QAxObject, QAxScript 및 ActiveQt 프레임워크도참조하세요 .
멤버 함수 문서
[explicit]
QAxWidget::QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
빈 QAxWidget 위젯을 생성하고 parent 및 f 을 QWidget 생성자에 전파합니다. 컨트롤을 초기화하려면 setControl()를 호출합니다.
[explicit]
QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
iface 에서 참조하는 COM 객체를 래핑하는 QAxWidget을 생성합니다. parent 및 f 은 QWidget 생성자로 전파됩니다.
[explicit]
QAxWidget::QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QAxWidget 위젯을 생성하고 ActiveX 컨트롤을 초기화합니다 c. parent 및 f 은 QWidget 생성자로 전파됩니다.
setControl()도 참조하세요 .
[override virtual noexcept]
QAxWidget::~QAxWidget()
ActiveX 컨트롤을 종료하고 QAxWidget 위젯을 삭제하여 할당된 모든 리소스를 정리합니다.
clear()도 참조하세요 .
[override virtual protected]
void QAxWidget::changeEvent(QEvent *e)
다시 구현합니다: QWidget::changeEvent(QEvent * 이벤트).
void QAxWidget::clear()
ActiveX 컨트롤을 종료합니다.
resetControl()도 참조하세요 .
[override virtual protected]
void QAxWidget::connectNotify(const QMetaMethod &signal)
재구현합니다: QObject::connectNotify(const QMetaMethod &signal).
[virtual]
QAxAggregated *QAxWidget::createAggregate()
ActiveX 컨트롤의 클라이언트 사이트에 대한 추가 COM 인터페이스를 구현하거나 COM 인터페이스의 대체 구현을 제공하려는 경우 이 함수를 다시 구현합니다. QAxAggregated 서브클래스의 새 객체를 반환합니다.
기본 구현은 널 포인터를 반환합니다.
[virtual protected]
bool QAxWidget::createHostWindow(bool initialized)
ActiveX 컨트롤의 클라이언트 사이트를 생성하고 컨트롤을 성공적으로 임베드할 수 있으면 참을 반환하고 그렇지 않으면 거짓을 반환합니다. initialized 이 참이면 컨트롤이 이미 초기화된 것입니다.
이 함수는 initialize()에 의해 호출됩니다. 실제 컨트롤 인스턴스화를 사용자 지정하기 위해 초기화를 다시 구현하는 경우, 다시 구현할 때 이 함수를 호출하여 기본 클라이언트 측에서 컨트롤을 임베드하도록 합니다. ActiveX 컨트롤의 클라이언트 사이트를 생성하고 컨트롤을 성공적으로 임베드할 수 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
[protected]
bool QAxWidget::createHostWindow(bool initialized, const QByteArray &data)
ActiveX 컨트롤의 클라이언트 사이트를 생성하고 컨트롤을 성공적으로 임베드할 수 있으면 참을 반환하고 그렇지 않으면 거짓을 반환합니다. initialized 이 거짓이면 컨트롤은 data 을 사용하여 초기화됩니다. 컨트롤은 IPersistStreamInit 또는 IPersistStorage 인터페이스를 통해 초기화됩니다.
사용자 지정 데이터를 사용하여 컨트롤을 초기화해야 하는 경우 initialize()의 재구현에서 이 함수를 호출합니다. 이 함수는 initialize()의 기본 구현에서는 호출되지 않습니다.
bool QAxWidget::doVerb(const QString &verb)
작업을 수행하기 위해 ActiveX 컨트롤을 요청합니다 verb. 가능한 동사는 verbs()로 반환됩니다.
이 함수는 객체가 동작을 수행할 수 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
[override virtual protected]
bool QAxWidget::initialize(IUnknown **ptr)
다시 구현합니다: QAxBase::initialize(IUnknown **ptr).
QAxBase::initialize(ptr)를 호출하고 성공하면 createHostWindow(false)를 호출하여 이 위젯에 컨트롤을 임베드합니다.
컨트롤을 활성화하기 전에 초기화하려면 이 함수를 다시 구현하고 createHostWindow(참)을 호출하기 전에 초기화 코드를 추가합니다.
성공하면 true
, 그렇지 않으면 false
을 반환합니다.
[override virtual]
QSize QAxWidget::minimumSizeHint() const
속성에 대한 액세스 함수를 다시 구현합니다: QWidget::minimumSizeHint.
[override virtual]
void QAxWidget::resetControl()
다시 구현합니다: QAxObjectInterface::resetControl().
ActiveX 컨트롤을 종료합니다.
[override virtual protected]
void QAxWidget::resizeEvent(QResizeEvent *)
다시 구현합니다: QWidget::resizeEvent(QResizeEvent * 이벤트).
[override virtual]
QSize QAxWidget::sizeHint() const
속성에 대한 액세스 함수를 다시 구현합니다: QWidget::sizeHint.
[virtual protected]
bool QAxWidget::translateKeyEvent(int message, int keycode) const
이 함수를 다시 구현하여 특정 키 이벤트를 ActiveX 컨트롤에 전달합니다. message 은 메시지 유형을 지정하는 윈도우 메시지 식별자(예: WM_KEYDOWN)이고 keycode 은 가상 키코드(예: VK_TAB)입니다.
함수가 참을 반환하면 키 이벤트가 ActiveX 컨트롤로 전달되고, 이 컨트롤은 이벤트를 처리하거나 Qt로 이벤트를 전달합니다.
함수가 false를 반환하면 키 이벤트 처리는 ActiveQt에 의해 무시됩니다. 즉, ActiveX 컨트롤이 처리할 수도 있고 처리하지 않을 수도 있습니다.
기본 구현은 다음과 같은 경우에 참을 반환합니다:
WM_SYSKEYDOWN | WM_SYSKEYUP | WM_KEYDOWN |
---|---|---|
모든 키 코드 | VK_MENU | VK_TAB, VK_DELETE 및 화살표 키가 아닌 모든 키와 VK_SHIFT, VK_CONTROL 또는 VK_MENU의 조합 |
이 표는 널리 사용되는 ActiveX 컨트롤(예: Internet Explorer 및 Microsoft Office 애플리케이션)을 실험한 결과이지만 일부 컨트롤의 경우 수정이 필요할 수 있습니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.