删除QComboBox上的项目?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除QComboBox上的项目?相关的知识,希望对你有一定的参考价值。

也许我在错误的地方寻找,或者我可能并不完全理解这个概念;但我试图找到一个工作示例,我可以在QComboBox上删除一个文本文件,它将触发我可以处理的drop事件。我查看了文档,但没有关于这个主题的大量信息。

我也四处寻找,但我也没有找到任何东西。如果我只是不在正确的位置,请随时指出我正确的方向。

答案

您必须覆盖dragEnterEvent方法以启用接受哪种类型的元素,并使用dropEvent方法获取有关拖动元素的信息。但为此,您必须使用self.setAcceptDrops(True)来启用该行为

import sys

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class ComboBox(QComboBox):
    def __init__(self, *args, **kwargs):
        QComboBox.__init__(self, *args, **kwargs)
        self.setAcceptDrops(True)

    def dragEnterEvent(self, event):
         #print("formats: ", event.mimeData().formats())
        if event.mimeData().hasFormat("text/plain"):
            event.acceptProposedAction()

    def dropEvent(self, event):
        url = QUrl(event.mimeData().text().strip())
        if url.isLocalFile():
            file = QFile(url.toLocalFile())
            if file.open(QFile.ReadOnly|QFile.Text):
                ts = QTextStream(file)
                while not ts.atEnd():
                    print(ts.readLine())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = ComboBox()
    w.addItems(["item {}".format(i) for i in range(10)])
    w.show()
    sys.exit(app.exec_())

如果您需要更多信息,可以查看Qt documentation

以上是关于删除QComboBox上的项目?的主要内容,如果未能解决你的问题,请参考以下文章

在启动时发送 QComboBox 中项目的当前显示索引

将项目添加到 QComboBox

如果在底部导航栏中选择了其他项目,如何删除 floatingActionButton 替换片段

QComboBox 点击触发主 QDialog 上的 leaveEvent

根据来自 QComboBox 的用户输入添加和删除动态生成的 QLineEdit 小部件

Qt,QStandarItemModel:自定义QComboBox上的委托项从模型的实例化器填充其内容