QT 如何在QLineEdit 内容的外沿画矩形框, 只包住文字
时间: 2024-05-11 07:20:24 浏览: 117
你可以通过在 `QLineEdit` 的 `paintEvent` 中绘制矩形来实现这个效果。
下面是一个简单的示例代码,可以在 `QLineEdit` 内容外沿画一个矩形框:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtWidgets import QApplication, QLineEdit, QVBoxLayout, QWidget
class LineEditWithFrame(QLineEdit):
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
# 画矩形框
rect = self.contentsRect()
rect.adjust(-1, -1, 1, 1)
painter.setPen(QPen(QColor(200, 200, 200), 1, Qt.SolidLine))
painter.drawRect(rect)
# 绘制文本
painter.setPen(QColor(0, 0, 0))
painter.drawText(self.textMargins().left(), self.rect().center().y(), self.text())
painter.end()
if __name__ == '__main__':
app = QApplication([])
w = QWidget()
layout = QVBoxLayout()
line_edit = LineEditWithFrame()
layout.addWidget(line_edit)
w.setLayout(layout)
w.show()
app.exec_()
```
在上面的代码中,重写了 `QLineEdit` 的 `paintEvent` 方法,首先绘制矩形框,然后再绘制文本。调整矩形框大小和文本对齐方式,可以根据自己的需求进行修改。
阅读全文