我想在QMessageBox上有一个可复制的文本,所以我想我可以在QMessageBox上放一个QLineEdit,然后设置QLineEdit的文本,这样用户就可以选择文本并复制它。
但我没能成功。是否有方法将QLineEdit添加到QMessageBox或在QMessageBox上制作可复制文本?
通过玩QMessageBox.informativeText()
、QMessageBox.detailedText()
和QMessageBox.textInteractionFlags()
,我发现了以下内容:
即使QmessageBox.textInteractionFlags()
被设置为QtCore.Qt.NoTextInteraction
,QMessageBox.informativeText()
和QMessageBox.detailedText()
也总是可选择的。QMessageBox.detailedText()
显示在文本编辑中。CCD_ 9仅作用于CCD_。这类文本的使用在QMessageBox的文档中进行了描述。通过标志,您可以将文本设置为可编辑和/或可选择,请参见枚举TextInteractionFlags。
这里是QmessageBox.detailedText()
:中可选择文本的工作示例
import sys
from PyQt5 import QtWidgets, QtCore
class MyWidget(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.setGeometry(400,50,200,200)
self.pushButton = QtWidgets.QPushButton('show messagebox', self)
self.pushButton.setGeometry(25, 90, 150, 25)
self.pushButton.clicked.connect(self.onClick)
def onClick(self):
msgbox = QtWidgets.QMessageBox()
msgbox.setText('to select click "show details"')
msgbox.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) # (QtCore.Qt.TextSelectableByMouse)
msgbox.setDetailedText('line 1nline 2nline 3')
msgbox.exec()
app = QtWidgets.QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())