Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 a级毛片网站,中文日本免费高清,久久精品国产在爱久久

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Qt編寫自定義控件-通用移動(dòng)

          Qt編寫自定義控件-通用移動(dòng)

          、前言

          通用移動(dòng)類,目標(biāo)就是為了實(shí)現(xiàn)放入任意的控件以后,支持鼠標(biāo)拖動(dòng),在容器中或者父類中拖動(dòng),這個(gè)應(yīng)用場(chǎng)景非常多,比如在地圖上放置的設(shè)備,需要用戶自行按下拖動(dòng)到指定的合適的位置,然后保存設(shè)備的位置坐標(biāo)到數(shù)據(jù)庫(kù),下次打開(kāi)直接加載,在一些安防項(xiàng)目、電力項(xiàng)目、環(huán)境監(jiān)測(cè)等上面大量運(yùn)用,有時(shí)候設(shè)備對(duì)應(yīng)了多種類型,以前做的辦法是將這個(gè)移動(dòng)的代碼直接封裝在對(duì)應(yīng)設(shè)備的自定義控件中,有個(gè)巨大缺點(diǎn)就是如果再新增加一個(gè)控件,又需要重復(fù)的代碼加到控件中才行,可否將這個(gè)功能獨(dú)立出來(lái),只要傳入控件就行呢,當(dāng)然可以,比如我寫過(guò)很多自定義控件,現(xiàn)在需要控件放到某個(gè)容器中能自由拖動(dòng),只需要new出通用移動(dòng)類來(lái)就行。
          項(xiàng)目開(kāi)源地址:https://gitee.com/feiyangqingyun/QWidgetDemo

          二、實(shí)現(xiàn)的功能

          • 1:可以指定需要移動(dòng)的widget
          • 2:可設(shè)置是否限定鼠標(biāo)左鍵拖動(dòng)
          • 3:支持任意widget控件

          三、效果圖

          四、頭文件代碼

          #ifndef MOVEWIDGET_H
          #define MOVEWIDGET_H
          
          /**
           * 通用控件移動(dòng)類 作者:feiyangqingyun(QQ:517216493) 2019-9-28
           * 1:可以指定需要移動(dòng)的widget
           * 2:可設(shè)置是否限定鼠標(biāo)左鍵拖動(dòng)
           * 3:支持任意widget控件
           */
          
          #include <QWidget>
          
          #ifdef quc
          #if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
          #include <QtDesigner/QDesignerExportWidget>
          #else
          #include <QtUiPlugin/QDesignerExportWidget>
          #endif
          
          class QDESIGNER_WIDGET_EXPORT MoveWidget : public QObject
          #else
          class MoveWidget : public QObject
          #endif
          
          {
              Q_OBJECT
          public:
              explicit MoveWidget(QObject *parent=0);
          
          protected:
              bool eventFilter(QObject *watched, QEvent *event);
          
          private:
              QPoint lastPoint;   //最后按下的坐標(biāo)
              bool pressed;       //鼠標(biāo)是否按下
              bool leftButton;    //限定鼠標(biāo)左鍵
              QWidget *widget;    //移動(dòng)的控件
          
          public Q_SLOTS:
              //設(shè)置是否限定鼠標(biāo)左鍵
              void setLeftButton(bool leftButton);
              //設(shè)置要移動(dòng)的控件
              void setWidget(QWidget *widget);
          };
          
          #endif // MOVEWIDGET_H
          
          
          

          【領(lǐng)QT開(kāi)發(fā)教程學(xué)習(xí)資料,點(diǎn)擊下方鏈接莬費(fèi)領(lǐng)取↓↓,先碼住不迷路~】

          點(diǎn)擊這里:「鏈接」


          五、核心代碼

          #include "movewidget.h"
          #include "qevent.h"
          #include "qdebug.h"
          
          MoveWidget::MoveWidget(QObject *parent) : QObject(parent)
          {
              lastPoint=QPoint(0, 0);
              pressed=false;
              leftButton=true;
              widget=0;
          }
          
          bool MoveWidget::eventFilter(QObject *watched, QEvent *event)
          {
              if (widget !=0 && watched==widget) {
                  QMouseEvent *mouseEvent=(QMouseEvent *)event;
                  if (mouseEvent->type()==QEvent::MouseButtonPress) {
                      //如果限定了只能鼠標(biāo)左鍵拖動(dòng)則判斷當(dāng)前是否是鼠標(biāo)左鍵
                      if (leftButton && mouseEvent->button() !=Qt::LeftButton) {
                          return false;
                      }
          
                      //判斷控件的區(qū)域是否包含了當(dāng)前鼠標(biāo)的坐標(biāo)
                      if (widget->rect().contains(mouseEvent->pos())) {
                          lastPoint=mouseEvent->pos();
                          pressed=true;
                      }
                  } else if (mouseEvent->type()==QEvent::MouseMove && pressed) {
                      //計(jì)算坐標(biāo)偏移值,調(diào)用move函數(shù)移動(dòng)過(guò)去
                      int offsetX=mouseEvent->pos().x() - lastPoint.x();
                      int offsetY=mouseEvent->pos().y() - lastPoint.y();
                      widget->move(widget->x() + offsetX, widget->y() + offsetY);
                  } else if (mouseEvent->type()==QEvent::MouseButtonRelease && pressed) {
                      pressed=false;
                  }
              }
          
              return QObject::eventFilter(watched, event);
          }
          
          void MoveWidget::setWidget(QWidget *widget)
          {
              if (this->widget==0) {
                  this->widget=widget;
                  this->widget->installEventFilter(this);
              }
          }
          
          void MoveWidget::setLeftButton(bool leftButton)
          {
              this->leftButton=leftButton;
          }
          
          
          

          六、控件介紹

          1. 超過(guò)150個(gè)精美控件,涵蓋了各種儀表盤、進(jìn)度條、進(jìn)度球、指南針、曲線圖、標(biāo)尺、溫度計(jì)、導(dǎo)航條、導(dǎo)航欄,flatui、高亮按鈕、滑動(dòng)選擇器、農(nóng)歷等。遠(yuǎn)超qwt集成的控件數(shù)量。
          2. 每個(gè)類都可以獨(dú)立成一個(gè)單獨(dú)的控件,零耦合,每個(gè)控件一個(gè)頭文件和一個(gè)實(shí)現(xiàn)文件,不依賴其他文件,方便單個(gè)控件以源碼形式集成到項(xiàng)目中,較少代碼量。qwt的控件類環(huán)環(huán)相扣,高度耦合,想要使用其中一個(gè)控件,必須包含所有的代碼。
          3. 全部純Qt編寫,QWidget+QPainter繪制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持任意操作系統(tǒng)比如windows+linux+mac+嵌入式linux等,不亂碼,可直接集成到Qt Creator中,和自帶的控件一樣使用,大部分效果只要設(shè)置幾個(gè)屬性即可,極為方便。
          4. 每個(gè)控件都有一個(gè)對(duì)應(yīng)的單獨(dú)的包含該控件源碼的DEMO,方便參考使用。同時(shí)還提供一個(gè)所有控件使用的集成的DEMO。
          5. 每個(gè)控件的源代碼都有詳細(xì)中文注釋,都按照統(tǒng)一設(shè)計(jì)規(guī)范編寫,方便學(xué)習(xí)自定義控件的編寫。
          6. 每個(gè)控件默認(rèn)配色和demo對(duì)應(yīng)的配色都非常精美。
          7. 超過(guò)130個(gè)可見(jiàn)控件,6個(gè)不可見(jiàn)控件。
          8. 部分控件提供多種樣式風(fēng)格選擇,多種指示器樣式選擇。
          9. 所有控件自適應(yīng)窗體拉伸變化。
          10. 集成自定義控件屬性設(shè)計(jì)器,支持拖曳設(shè)計(jì),所見(jiàn)即所得,支持導(dǎo)入導(dǎo)出xml格式。
          11. 自帶activex控件demo,所有控件可以直接運(yùn)行在ie瀏覽器中。
          12. 集成fontawesome圖形字體+阿里巴巴iconfont收藏的幾百個(gè)圖形字體,享受圖形字體帶來(lái)的樂(lè)趣。
          13. 所有控件最后生成一個(gè)動(dòng)態(tài)庫(kù)文件(dll或者so等),可以直接集成到qtcreator中拖曳設(shè)計(jì)使用。
          14. 目前已經(jīng)有qml版本,后期會(huì)考慮出pyqt版本,如果用戶需求量很大的話。
          15. 自定義控件插件開(kāi)放動(dòng)態(tài)庫(kù)使用(永久免費(fèi)),無(wú)任何后門和限制,請(qǐng)放心使用。
          16. 目前已提供26個(gè)版本的dll,其中包括了qt5.12.3 msvc2017 32+64 mingw 32+64 的。
          17. 不定期增加控件和完善控件,不定期更新SDK,歡迎各位提出建議,謝謝!
          18. Qt入門書(shū)籍推薦霍亞飛的《Qt Creator快速入門》《Qt5編程入門》,Qt進(jìn)階書(shū)籍推薦官方的《C++ GUI Qt4編程》。
          19. 強(qiáng)烈推薦程序員自我修養(yǎng)和規(guī)劃系列書(shū)《大話程序員》《程序員的成長(zhǎng)課》《解憂程序員》,受益匪淺,受益終生!
          20. SDK地址:https://gitee.com/feiyangqingyun/QUCSDK

          原文鏈接:https://www.cnblogs.com/feiyangqingyun/p/11608377.html

          【領(lǐng)QT開(kāi)發(fā)教程學(xué)習(xí)資料,點(diǎn)擊下方鏈接莬費(fèi)領(lǐng)取↓↓,先碼住不迷路~】

          點(diǎn)擊這里:Qt資料領(lǐng)取(視頻教程+文檔+代碼+項(xiàng)目實(shí)戰(zhàn))

          用JavaScript實(shí)現(xiàn)頁(yè)面滑動(dòng)到指定位置加載動(dòng)畫(huà)。

          若頁(yè)面滾動(dòng)到class名為group-pic的元素的位置時(shí)開(kāi)始加載


          1. $(document).ready(function(){
          2. var a,b,c;
          3. a=$(window).height(); //瀏覽器窗口高度
          4. var group=$(".group-pic");
          5. $(window).scroll(function(){
          6. b=$(this).scrollTop(); //頁(yè)面滾動(dòng)的高度
          7. c=group.offset().top; //元素距離文檔(document)頂部的高度
          8. if(a+b>c){
          9. ...
          10. }else{
          11. ...
          12. }
          13. });
          14. });

          原理: 1.獲取瀏覽器窗口的高度;

          2.獲取頁(yè)面滾動(dòng)的高度;

          3.獲取頁(yè)面距離文檔(document)頂部的高度

          offset().top具體指的是距哪里的高度呢?

          一些獲寬高度的屬性:

          網(wǎng)頁(yè)可見(jiàn)區(qū)域?qū)挘?document.body.clientWidth;

          網(wǎng)頁(yè)可見(jiàn)區(qū)域高: document.body.clientHeight;

          網(wǎng)頁(yè)可見(jiàn)區(qū)域?qū)挘?document.body.offsetWidth (包括邊線的寬);

          網(wǎng)頁(yè)可見(jiàn)區(qū)域高: document.body.offsetHeight (包括邊線的寬);

          網(wǎng)頁(yè)正文全文寬: document.body.scrollWidth;

          網(wǎng)頁(yè)正文全文高: document.body.scrollHeight;

          網(wǎng)頁(yè)被卷去的高: document.body.scrollTop;

          網(wǎng)頁(yè)被卷去的左: document.body.scrollLeft;

          網(wǎng)頁(yè)正文部分上: window.screenTop;

          網(wǎng)頁(yè)正文部分左: window.screenLeft;

          屏幕分辨率的高: window.screen.height;

          屏幕分辨率的寬: window.screen.width;

          屏幕可用工作區(qū)高度: window.screen.availHeight;

          屏幕可用工作區(qū)寬度:window.screen.availWidth;

          obj.offsetTop 指 obj 距離上方或上層控件的位置,整型,單位像素。

          obj.offsetLeft 指 obj 距離左方或上層控件的位置,整型,單位像素。

          obj.offsetWidth 指 obj 控件自身的寬度,整型,單位像素。

          obj.offsetHeight 指 obj 控件自身的高度,整型,單位像素。

          1.offsetTop : 當(dāng)前對(duì)象到其上級(jí)層頂部的距離.

          不能對(duì)其進(jìn)行賦值.設(shè)置對(duì)象到頁(yè)面頂部的距離請(qǐng)用style.top屬性.

          2.offsetLeft : 當(dāng)前對(duì)象到其上級(jí)層左邊的距離.

          不能對(duì)其進(jìn)行賦值.設(shè)置對(duì)象到頁(yè)面左部的距離請(qǐng)用style.left屬性.

          3.offsetWidth : 當(dāng)前對(duì)象的寬度.

          與style.width屬性的區(qū)別在于:如對(duì)象的寬度設(shè)定值為百分比寬度,則無(wú)論頁(yè)面變大還是變小,style.width都返回此百分比,而offsetWidth則返回在不同頁(yè)面中對(duì)象的寬度值而不是百分比值

          4.offsetHeight : 與style.height屬性的區(qū)別在于:如對(duì)象的寬度設(shè)定值為百分比高度,則無(wú)論頁(yè)面變大還是變小,style.height都返回此百分比,而offsetHeight則返回在不同頁(yè)面中對(duì)象的高度值而不是百分比值

          想繪圖插件5.2(MxDraw5.2)


          夢(mèng)想CAD是專業(yè)的CAD插件(控件),經(jīng)過(guò)10年研發(fā),可輕松在網(wǎng)頁(yè)、手機(jī)及BS/CS程序中使用CAD和瀏覽編輯DWG文件,不需安裝AutoCAD即可運(yùn)行。

          控件核心代碼使用VC++ 2010開(kāi)發(fā),至今已有三十萬(wàn)行代碼規(guī)模;2007年發(fā)布第一個(gè)Release版本,經(jīng)過(guò)多年的版本更迭與技術(shù)沉淀,控件已經(jīng)十分快速穩(wěn)定。在關(guān)鍵的 空間搜索 上使用了復(fù)雜度極低的算法,并且使用 匯編 優(yōu)化,可以處理50萬(wàn)級(jí)的實(shí)體,圖形的顯示和處理效率比同類產(chǎn)品高出很多。


          夢(mèng)想繪圖3d插件6.0(MxDraw6.03d)


          使用二位控件的顯示核心,基于 OpenCASCADE幾何造型引擎 ,創(chuàng)建錐、柱、環(huán)等基本幾何體,對(duì)幾何體進(jìn)行 布爾操作 ,如:相加、相減、相較、倒角、斜切、鏤空、偏移、掃視;幾何 空間關(guān)系計(jì)算 ,如:法線、點(diǎn)積、叉積、投影、擬合;幾何體分析,如:質(zhì)心、體積、曲率; 空間變換 ,如:平移、縮放、旋轉(zhuǎn)。


          夢(mèng)想繪圖手機(jī)版插件6.0(MxDrawAndroid6.0/MxDrawIOS6.0/)


          使用二維控件的顯示核心,并專對(duì)手機(jī)顯示CAD圖紙做了極速優(yōu)化 ,是目前手機(jī)上顯示DWG文件非常快的控件。


          夢(mèng)想CAD軟件5.2(MxCAD5.0)


          使用二維控件的顯示核心,完全自主的二維CAD繪圖軟件,程序簡(jiǎn)潔、運(yùn)行快速、功能齊全、穩(wěn)定可靠;兼容 所有版本的DWG文件 ,支持 ARX的二次開(kāi)發(fā)接口。


          安裝包下載


          點(diǎn)擊此處下載

          運(yùn)行環(huán)境

          支持以下的32/64平臺(tái)的系統(tǒng):WindowsXP、Windows2000、WindowsVista、WindowsServer、Windows7、Windows8、Windows10。


          支持以下的瀏覽器:IE所有版本、火狐、谷歌4.5及以前的版本、360瀏覽器(兼容模式)、QQ瀏覽器。


          1

          QQ瀏覽器使用了最新的谷歌瀏覽器內(nèi)核,可使用QQ瀏覽器代替谷歌瀏覽器運(yùn)行控件

          支持語(yǔ)言

          網(wǎng)頁(yè)使用,支持 IE所有版本

          控件支持如下的語(yǔ)言進(jìn)行二次開(kāi)發(fā):VC、VB、CSharp、Delphi、HTML、ASP、JAVA、JavaScript、C++、 Builder、PHP、.Net、易語(yǔ)言、PowerBuild等。

          編程接口

          有一萬(wàn)多個(gè)接口函數(shù) 可供調(diào)用,提供Object Arx,AutoCAD VBA、COM開(kāi)發(fā)接口,與AutoCAD二次開(kāi)發(fā)類似的接口。

          文件格式

          控件支持自定義文件格式,擴(kuò)展名為.mxg,mxg文件 穩(wěn)定可靠 ,能 完整呈現(xiàn)DWG文件 ,支持圖紙預(yù)覽,加密;支持DWG、DXG、BMP、JPG、PNG、DWF、PDF、GIF、ICO DGN、SHP等。

          支持SHX、TrueType字體。

          控件與AutoCAD兼容,支持AutoCAD R14至AutoCAD 2017的 所有DWG圖紙格式 ,并保證能支持將來(lái)新出現(xiàn)的AutoCAD文件格式。

          網(wǎng)絡(luò)功能

          在控件支持的瀏覽器(見(jiàn) 運(yùn)行環(huán)境 )中,控件可瀏覽服務(wù)器上的DWG文件,把DWG文件保存到服務(wù)器、在服務(wù)器后臺(tái)運(yùn)行控件、把DWG轉(zhuǎn)成其他格式、提取信息等;支持FTP連接,二進(jìn)制數(shù)據(jù)流加載。


          在網(wǎng)頁(yè)中使用控件演示

          主要功能

          DWG批量轉(zhuǎn)到PDF、DWF,圖紙信息搜索提取,測(cè)距離,算面積,圖章, 批注 ,捕捉,正交,實(shí)體閃爍,曲線離散,偏移,打斷,陣列,擴(kuò)展數(shù)據(jù)讀寫,擴(kuò)展記錄讀寫,構(gòu)造選擇集,打印, 動(dòng)畫(huà)自定義實(shí)體 ,組,右鍵菜單, 超連接 ,Undo,Redo,字典,圖層,標(biāo)注樣式,線型樣式,文字樣式,視口,布局, 用戶坐標(biāo)系 ,系統(tǒng)變量,圖紙比較,圖紙剪切,界面切換,動(dòng)態(tài)提示,google百度地圖等。

          打印功能

          框選、全屏打印、后臺(tái)批量打印、多個(gè) 圖紙嵌套打印 、與 網(wǎng)頁(yè)合并打印 等。

          顯示功能

          鳥(niǎo)瞰、放大鏡、視區(qū)平移、縮放、視區(qū)旋轉(zhuǎn)、鷹眼、 透明顯示 、背景、水印、網(wǎng)格、回溯顯示、最佳顯示、顯示/隱藏工具條、瀏覽模式、 分屏顯示 、矢量線、矢量圓、 動(dòng)畫(huà) 、動(dòng)態(tài)標(biāo)注、疊加對(duì)比顯示等。

          圖元支持

          主要實(shí)體有:直線,圓弧,Polyline,樣條線,圓,橢圓,橢圓弧,IMAGE,點(diǎn),塊引用,外部塊參照,射線,云線,文本,多行文本,對(duì)齊標(biāo)注,旋轉(zhuǎn)標(biāo)注 ,半徑標(biāo)注,直徑標(biāo)注,角度標(biāo)注,OLE對(duì)象,布局,視口,圖層,線型,文字樣式,命名字典,標(biāo)注, 自定義實(shí)體 ,代理實(shí)體, 反應(yīng)器 等。主要編輯有:移動(dòng),夾點(diǎn)拉伸,偏移,刪除,復(fù)制,粘貼,旋轉(zhuǎn),縮放,鏡向,離散,圖案填充,實(shí)心填充,打碎,計(jì)算曲線長(zhǎng),面積,最jin點(diǎn),交點(diǎn),導(dǎo)角, 文字變線條 等。

          編輯支持

          移動(dòng)、夾點(diǎn)拉伸、偏移、刪除、復(fù)制、粘貼、旋轉(zhuǎn)、縮放、鏡向、離散、圖案填充、實(shí)心填充、打碎、計(jì)算曲線長(zhǎng)、面積、最近點(diǎn)、交點(diǎn)、倒角、文字變線條等。

          幾何運(yùn)算

          面積,夾角,向量,矩陣,旋轉(zhuǎn),縮放,最進(jìn)點(diǎn),最進(jìn)距離,垂足,參數(shù),鏡向,平移,交點(diǎn),打斷,延伸, 最短路徑最長(zhǎng)路徑

          支持事件

          鼠標(biāo)事件鍵盤事件 ,選擇修改,夾點(diǎn)編輯,打圖紙完成,命令開(kāi)始,命令執(zhí)行完成,視區(qū)變化,動(dòng)態(tài)提示,動(dòng)態(tài)繪制,超連接點(diǎn)擊,對(duì)象修改,命令執(zhí)行,進(jìn)度條變動(dòng),系統(tǒng)變量修改,控件初始化完成,等事件。


          主站蜘蛛池模板: 成人h动漫精品一区二区无码| 丰满岳乱妇一区二区三区| 亚洲乱色熟女一区二区三区蜜臀| 日韩电影在线观看第一区| 亚洲一区二区影视| 99国产精品一区二区| 精品久久久久久中文字幕一区| 无码人妻久久久一区二区三区| 高清一区二区三区视频| 韩国精品福利一区二区三区| 久久久久人妻一区二区三区vr| 不卡一区二区在线| 亚洲性日韩精品一区二区三区| 日韩福利视频一区| 日本一区二区三区久久| 天海翼一区二区三区高清视频| 国产自产对白一区| 国产精品福利一区二区| 中文字幕一区二区三区5566| 久久国产精品视频一区| 久久婷婷久久一区二区三区| 成人无码AV一区二区| 国产午夜精品一区二区| 亚洲欧洲∨国产一区二区三区| 精品一区二区三区在线观看 | 中文字幕日韩人妻不卡一区| 无码AⅤ精品一区二区三区| 麻豆视频一区二区三区| 男人免费视频一区二区在线观看| 精品无码一区二区三区水蜜桃| 国产视频一区二区| 一区二区3区免费视频| 精品一区二区三区免费观看| 国产成人无码一区二区在线播放 | 视频一区视频二区制服丝袜| 麻豆视传媒一区二区三区| 中文字幕一区精品| 无码人妻一区二区三区在线视频| 精品一区二区三区无码免费视频 | 精品国产福利第一区二区三区| 国产精品毛片一区二区三区|