翻譯|使用教程|編輯:鮑佳佳|2021-06-21 09:46:49.247|閱讀 116 次
概述:Multiple 示例演示了QAxFactory的實現,以使用QAXFACTORY_EXPORT()宏在單個進程內 ActiveX 服務器中提供多個 ActiveX 控件。本例中的 ActiveX 控件是簡單的QWidget子類,它們重新實現了QWidget::paintEvent ()。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。現在我們為你提供了免費的試用版。
Qt組件推薦:
Multiple 示例演示了QAxFactory的實現,以使用QAXFACTORY_EXPORT()宏在單個進程內 ActiveX 服務器中提供多個 ActiveX 控件。本例中的 ActiveX 控件是簡單的QWidget子類,它們重新實現了QWidget::paintEven ()。
class QAxWidget1 : public QWidget { Q_OBJECT Q_CLASSINFO("ClassID", "{1D9928BD-4453-4bdd-903D-E525ED17FDE5}") Q_CLASSINFO("InterfaceID", "{99F6860E-2C5A-42ec-87F2-43396F4BE389}") Q_CLASSINFO("EventsID", "{0A3E9F27-E4F1-45bb-9E47-63099BCCD0E3}") Q_PROPERTY(QColor fillColor READ fillColor WRITE setFillColor) public: explicit QAxWidget1(QWidget *parent = nullptr) : QWidget(parent) { } QColor fillColor() const { return m_fillColor; } void setFillColor(const QColor &fc) { m_fillColor = fc; repaint(); } protected: void paintEvent(QPaintEvent *e) override { QPainter paint(this); QRect r = rect(); r.adjust(10, 10, -10, -10); paint.fillRect(r, m_fillColor); } private: QColor m_fillColor = Qt::red; };
第一個控件繪制一個實心矩形。填充顏色作為屬性公開。Q_CLASSINFO()用于指定 COM 標識符。
class QAxWidget2 : public QWidget { Q_OBJECT Q_CLASSINFO("ClassID", "{58139D56-6BE9-4b17-937D-1B1EDEDD5B71}") Q_CLASSINFO("InterfaceID", "{B66280AB-08CC-4dcc-924F-58E6D7975B7D}") Q_CLASSINFO("EventsID", "{D72BACBA-03C4-4480-B4BB-DE4FE3AA14A0}") Q_CLASSINFO("ToSuperClass", "QAxWidget2") Q_CLASSINFO("StockEvents", "yes") Q_CLASSINFO("Insertable", "yes") Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth) public: using QWidget::QWidget; int lineWidth() const { return m_lineWidth; } void setLineWidth(int lw) { m_lineWidth = lw; repaint(); } protected: void paintEvent(QPaintEvent *e) override { QPainter paint(this); QPen pen = paint.pen(); pen.setWidth(m_lineWidth); paint.setPen(pen); QRect r = rect(); r.adjust(10, 10, -10, -10); paint.drawEllipse(r); } private: int m_lineWidth = 1; };
第二個控件繪制一個圓圈。linewith 作為屬性公開。Q_CLASSINFO()用于指定 COM 標識符,并設置ToSuperClass和StockEvents屬性以僅公開類本身的 API,并將 COM 股票事件添加到 ActiveX 控件。
#include "ax1.h" "ax1.h" #include "ax2.h" "ax2.h" #include <QAxFactory> <QAxFactory> QT_USE_NAMESPACE QAXFACTORY_BEGIN(("{98DE28B6-6CD3-4e08-B9FA-3D1DB43F1D2F}", "{05828915-AD1C-47ab-AB96-D6AD1E25F0E2}") QAXCLASS(QAxWidget1)(QAxWidget1) QAXCLASS(QAxWidget2)(QAxWidget2) QAXFACTORY_END()()
這些類是使用QAxFactory宏從服務器導出的。
要構建示例,您必須首先構建QAxServer庫。然后qmake在examples/activeqt/multiple.
該兩個簡單的Qt控件演示要求你的web瀏覽器支持ActiveX控件,并啟用腳本。
<script language language="javascript"> function setColor( form )function setColor( form ) {{ Ax1Ax1.fillColor = form.colorEdit.value;; }} function setWidth( form )function setWidth( form ) {{ Ax2Ax2.lineWidth = form.widthEdit.value;; }} </script> <p /> This is one QWidget subclass:<br /> <object ID ID="Ax1" CLASSIDCLASSID="CLSID:1D9928BD-4453-4bdd-903D-E525ED17FDE5" CODEBASECODEBASE="http://qt.nokia.com/demos/multipleax.cab"> [Object not available! Did you forget to build and register the server?] </object><br /> <form> Fill Color: <input type type="edit" IDID="colorEdit" value value = "red" /> <input type type="button" value value = "Set" onClickonClick="setColor(this.form)"setColor(this.form)" /> <input type type="button" value value = "Hide" onClickonClick="Ax1.hide()"Ax1.hide()" /> <input type type="button" value value = "Show" onClickonClick="Ax1.show()"Ax1.show()" /> </form> <p /> This is another QWidget subclass:<br /> <object ID ID="Ax2" CLASSIDCLASSID="CLSID:58139D56-6BE9-4b17-937D-1B1EDEDD5B71" CODEBASECODEBASE="http://qt.nokia.com/demos/multipleax.cab"> [Object not available! Did you forget to build and register the server?] </object><br /> <form> Line width: <input type type="edit" IDID="widthEdit" value value = "1" /> <input type type="button" value value = "Set" onClickonClick="setWidth(this.form)"setWidth(this.form)" /> </form>
====================================================
想要了解或購買Qt正版授權的朋友,歡迎
Qt技術交流群現已開通,QQ搜索群號“765444821”或者掃描下方二維碼即可加入
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: