<button id="8ieq4"><input id="8ieq4"></input></button>
  • <sup id="8ieq4"><tbody id="8ieq4"></tbody></sup>
  • <rt id="8ieq4"><delect id="8ieq4"></delect></rt>
    產品咨詢熱線 400-871-5551     搜索     русский язык  |  English
    x

    公司新聞 行業資訊

    首頁 > 新聞資訊 > 水刀研究院
    圖形實體手動排序
    來源: 時間:2021-06-24 瀏覽:4469
    單個排序,列表排序,鼠標拾取排序這三種排序方式都是在進入實體排序狀態下才會被激活。
           單個排序,列表排序,鼠標拾取排序這三種排序方式都是在進入實體排序狀態下才會被激活。單個排序、列表排序、及鼠標拾取排序按鈕都設計成菜單欄“Modify的子按鈕,在“Modify”菜單要顯示的時候,就會發射出 about To Show()信號,從而調 用 “ 顯 示 實 體 排 序 ” 槽 函 數 slot Modify Menu About To Show() , 在 函 數 里 判 斷
    display Entities Order Action 是否處于選中狀態,如果處于選中狀態,則列表排序list Sort Action 的 enable 屬性變為 true ,列表排序按鈕被激活,而對于單個排序single Sort Action 和鼠標拾取排序 mouse Sort Action 還需判斷選中的實體數量,只有當選中的實體數量為 時,single Sort Action 的 enable 屬性才變為 true,單個排序按鈕被激活,而只有當選中的實體數量大于 時,mouse Sort Action 的 enable 屬性才變為 true

    ,鼠標拾取排序按鈕被激活。具體每一個實體對應的一個序號的實現函數都是drawTextp(intx1,  inty1,  const  QString&  text),只是對于不同種類實體調用的參數不同而已 , 例如直線: drawTextp(midPoint.x+20,midPoint.y+20,QString::number(painter->m_n Indx)),其中調用的實際參數是直線段中點 坐標+20坐標+20、實體在容器中的序號。具體手動排序方式界面設計與實現將在下面每一小節中進行具體的介紹。

    1)單個排序

           單個實體排序,即一次只能對一個實體進行排序操作。首先要進入實體排序狀態,然后選中單個實體,“單個排序”按鈕才會被激活,單擊“單個排序”按鈕,彈出單個實體排序對話框,選擇想要的加工序號,點擊“OK”即可。單個實體排序操作的流程圖如圖 3.4 
    所示。自定義圖形實體或是從文件中讀取的圖形實體都會被存到類RS_Entity Container 中的成員 QList<RS_Entity *> entities 中,通過在類中定義一些函數(方法)獲取實體的信息,比如獲取容器中的第一個實體指針,最后一個實體指針,給定序號指定的實體指針,因此可以得到當前實體的序號,然后通過 swap Entity(int index,  RS_Entity  *e)函數將被選中的實體指針插到指定的位置,其它的實體指針依次后移一個位置,并去除原來實體指針。單個實體排序的對話框及用到 Qt 中的一些組件如圖 3.5 所示。單個實體序號 排序前和排序后的效果圖分別如圖 3.6 和圖 3.7 所示。

     


    2)列表排序
          列表排序,即一次可以對多個實體同時進行操作。首先要進入實體排序狀態,單擊“列表排序”按鈕,彈出列表排序對話框,選擇實體序號,然后點擊“向上移”按鈕,或是“向下移”按鈕,或是“移到最前”按鈕,或是“移到最后”按鈕,最后點擊“OK”即可。列表排序的對話框及用到 Qt 中的一些組件如圖 3.8 所示。對話框中每一種按鈕操作的響應都是通過信號和槽來實現的,例如“向上移”按鈕,通過槽函數 slot Step Up()來實現整個操作。槽函數 slot Step Up()主要用到函數 swap Entity()(被選中的實體排到指定的位置,并去除原來的),函數 swap()(交換兩個數)等,列表排序實現的過程如圖 3.9 所示。列表排序前和排序后的效果圖分別如圖 3.10 和圖 3.11 示。 

    3)鼠標拾取排序
           當組成輪廓實體數量較多時,此時用單個排序或列表排序都會很長時間,效率不高,所以鼠標拾取排序是就是為了簡便用戶操作,提高效率而開發的。鼠標拾取排序操作的流程是:首先要進入實體排序狀態,然后選中需要重排實體,“鼠標拾取排序”按鈕才會被激活,單擊“鼠標拾取排序”按鈕,彈出鼠標拾取排序對話框,對話框中提示輸入開始排序的位置,此數值小于或等于被選中的最小實體序號,設置完數值點擊“OK”即可進入鼠標單擊排序中,然后單擊實體,所有需要重排的實體被單擊完后,彈出是否按照此排序排序的對話框,點擊“OK”即可。代碼實現的思路是:建立三個臨時表 QList<RS_Entity*>temple , QList<RS_Entity*>temple Entities QList<RS_Entity*>temple Entities2,通過 temple 等于創建實體時放入的鏈表 
    entities 到容器中的實體指針,遍歷鏈表 temple 中的實體指針,若實體被選中,則將實體指針放入鏈表 temple Entities 中,并將實體設置為不選中狀態,然后對實體進行單擊操作(若實體初始為不選中狀態,單擊實體一次,實體由不選中狀態變成選中狀態;若實體初始為選中狀態,單擊實體一次,實體由選中狀態變成不選中狀態,實體處于選中狀態時默認呈虛紅線顯示,實體處于不選中狀態時默認呈白實線顯示),實體處于選中狀態,判斷實體是否處于選中狀態,若是,就將實體指針加入鏈表 temple Entities2中并移除原來鏈表 temple Entities 中的實體指針,判斷是否遍歷完所有需要重排的實體指針(即鏈表 
    temple Entities 是否為空),若是,就遍歷鏈表 temple Entities2 中實體指針,移除鏈表 entities 中的實體指針并將鏈表 temple Entities2 中實體指針插入到鏈表entities 中。整個鼠標拾取排序操作的流程圖如圖 3.12 所示,鼠標拾取排序前后的效果圖分別如圖 3.13 和圖 3.14 所示,代碼實現的流程圖如圖 3.15 所示。
     



    上一條:圖形實體自動排序
    下一條:圖形實體換向的設計與實現
    水切割機|水刀切割機設備|水刀廠家 - 奧拓福水刀【官網】 版權所有 Copyright 2019-2025 遼ICP備2021002461號-1
    首頁
    產品中心
    電話咨詢
    av中文字幕在线| 少妇精品无码一区二区三区| 激情无码人妻又粗又大中国人| 亚洲中文字幕无码不卡电影| 国产乱人伦Av在线无码| 亚洲日韩国产二区无码| 中文字幕一区二区三区精彩视频| 人妻丰满?V无码久久不卡| 亚洲av无码不卡| 一区二区三区在线观看中文字幕 | 久久亚洲精品无码aⅴ大香 | 日本中文字幕在线2020| 久久久久无码专区亚洲av| 久久无码人妻一区二区三区| 亚洲中文字幕无码爆乳av中文| 亚洲伦另类中文字幕| 亚洲中文字幕无码一区二区三区| A∨变态另类天堂无码专区| 无码av免费网站| 无码人妻精品一区二区三区66| 国产亚洲大尺度无码无码专线 | 中文字幕日本精品一区二区三区 | 7777久久亚洲中文字幕| 中文字幕无码一区二区三区本日| AV成人午夜无码一区二区| 成人无码区免费A∨直播| 日韩人妻精品无码一区二区三区 | 精品国产v无码大片在线观看| 亚洲AV无码片一区二区三区| 亚洲中文字幕无码久久综合网| 制服在线无码专区| 影音先锋中文无码一区| 亚洲综合无码AV一区二区 | 狠狠噜天天噜日日噜无码| 十八禁无码免费网站| 人妻aⅴ无码一区二区三区| 无码H肉动漫在线观看| AAA级久久久精品无码片| 亚洲gv天堂无码男同在线观看| 天天爽亚洲中文字幕| 人妻丰满av无码中文字幕|