<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python Qt GUI設(shè)計:QDrag拖拽數(shù)據(jù)傳輸類(基礎(chǔ)篇—18)

          共 2163字,需瀏覽 5分鐘

           ·

          2021-12-12 11:24

          點擊上方藍(lán)色字體,關(guān)注我們


          為用戶提供的拖曳功能很直觀,在很多桌面應(yīng)用程序中,復(fù)制或移動對象都可以通過拖曳來完成。


          基于MIME類型的拖曳數(shù)據(jù)傳輸是基于QDrag類的。QMimeData對象將關(guān)聯(lián)的數(shù)據(jù)與其對應(yīng)的MIME類型相關(guān)聯(lián)。



          MIME(Multipurpose Internet Mail Extension,多用途互聯(lián)網(wǎng)郵件擴展類型)是設(shè)定某種擴展名的文件用一種應(yīng)用程序來打開的方式類型,當(dāng)該擴展名文件被訪問時,瀏覽器會自動使用指定的應(yīng)用程序來打開,多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。

          每種MIME類型都由兩部分組成,前面是數(shù)據(jù)的大類別,如聲音audio、圖像image等,后面定義具體的種類。

          常見的MIME類型(通用型)如下:

          • 超文本標(biāo)記語言文本 .html text/html

          • xml文檔 .xml text/xml

          • XHTML文檔 .xhtml application/xhtml+xml

          • 普通文本 .txt text/plain

          • RTF文本 .rtf application/rtf

          • PDF文檔 .pdf application/pdf

          • Microsoft Word文件 .word application/msword

          • PNG圖像 .png image/png

          • GIF圖形 .gif image/gif

          • JPEG圖形 .jpeg,.jpg image/jpeg

          • au聲音文件 .au audio/basic

          • MIDI音樂文件 mid,.midi audio/midi,audio/x-midi

          • RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

          • MPEG文件 .mpg,.mpeg video/mpeg

          • AVI文件 .avi video/x-msvideo

          • GZIP文件 .gz application/x-gzip

          • TAR文件 .tar application/x-tar

          • 任意的二進制數(shù)據(jù) application/octet-stream



          如下表所示的MimeData類函數(shù)允許檢測和使用方便的MIME類型:



          許多QWidget對象都支持拖曳動作,允許拖曳數(shù)據(jù)的控件必須設(shè)置QWidget.setDragEnabled()為True。另外,控件應(yīng)該響應(yīng)拖曳事件,以便存儲所拖曳的數(shù)據(jù)。常用的拖曳事件如下表所示:



          通個示例了解QDrag拖拽數(shù)據(jù)傳輸類,示例效果如下所示:



          示例中,DragEnterEvent會驗證事件的MIME數(shù)據(jù)是否包含字符串文本,如果包含字符串文本,就接收事件提出的添加文本操作,并將文本作為新條目(ltem)添加到ComboBox控件中,否則忽略此次操作。


          實現(xiàn)代碼如下所示:


          import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *
          class Combo(QComboBox):
          def __init__(self, title, parent): super(Combo, self).__init__( parent) self.setAcceptDrops(True)
          def dragEnterEvent(self, e): print(e) if e.mimeData().hasText(): e.accept() else: e.ignore()
          def dropEvent(self, e): self.addItem(e.mimeData().text())
          class Example(QWidget): def __init__(self): super(Example, self).__init__() self.initUI()
          def initUI(self): lo = QFormLayout() lo.addRow(QLabel("請把左邊的文本拖拽到右邊的下拉菜單中")) edit = QLineEdit() edit.setDragEnabled(True) com = Combo("Button", self) lo.addRow(edit,com) self.setLayout(lo) self.setWindowTitle('簡單拖拽例子')
          if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_())


          往期推薦



          點擊閱讀原文,更精彩~
          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  老司机日比视频 | 亚洲AV无码久久寂寞少妇多毛 | 激情深爱婷婷 | 天堂草原电视剧图片在线播放 | 97男人天堂|