qt 自定义带边框的竖向输入框
时间: 2023-10-13 07:05:06 浏览: 45
你可以使用 Qt 的样式表来自定义带边框的竖向输入框。以下是一个简单的示例:
```cpp
#include <QtWidgets>
class VerticalLineEdit : public QLineEdit {
public:
VerticalLineEdit(QWidget *parent = nullptr) : QLineEdit(parent) {
setStyleSheet("QLineEdit { border: 1px solid black; border-radius: 5px; padding: 2px; }"
"QLineEdit:focus { border-color: blue; }"
"QLineEdit::vertical { width: 20px; }");
}
QSize sizeHint() const override {
QSize size = QLineEdit::sizeHint();
return QSize(qMax(size.width(), size.height()), qMax(size.width(), size.height()));
}
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.translate(rect().bottomLeft());
painter.rotate(-90);
painter.drawText(QRect(0, 0, height(), width()), Qt::AlignCenter, text());
}
};
```
在这个示例中,我们创建了一个名为 `VerticalLineEdit` 的自定义类,继承自 `QLineEdit`。我们在构造函数中使用样式表来设置边框、圆角、内边距和垂直宽度。我们还重写了 `sizeHint()` 方法,以便在输入框的默认大小中使用较大的宽度和高度。最后,我们还重写了 `paintEvent()` 方法,以便将文本旋转90度并绘制到输入框中。