QT 如何在QLineEdit文字外沿画矩形框
时间: 2024-05-02 10:17:36 浏览: 78
可以通过设置QLineEdit的样式表(StyleSheet)来实现在文字外沿画矩形框的效果。具体步骤如下:
1. 在Qt Designer中或者在代码中创建一个QLineEdit控件。
2. 在控件的样式表中设置边框样式和颜色,例如:
```
QLineEdit {
border: 1px solid gray;
border-radius: 5px;
}
```
其中,`border`属性设置边框样式和宽度,`border-radius`属性设置边框圆角半径。
3. 可以通过设置控件的最小宽度和最小高度来让矩形框更加明显:
```
QLineEdit {
border: 1px solid gray;
border-radius: 5px;
min-width: 100px;
min-height: 20px;
}
```
4. 最后,将样式表应用到QLineEdit控件上即可:
```
lineEdit->setStyleSheet("QLineEdit {border: 1px solid gray; border-radius: 5px; min-width: 100px; min-height: 20px;}");
```
注意,如果在Qt Designer中设置样式表,需要将样式表设置为“编辑模式”(Edit mode),否则样式表不会生效。
相关问题
QT 如何在QLineEdit 内容的外沿画矩形框, 只包住文字
你可以通过在 `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` 方法,首先绘制矩形框,然后再绘制文本。调整矩形框大小和文本对齐方式,可以根据自己的需求进行修改。
阅读全文