在QLabel 中放置前缀或后缀没有常规方法。
占位符
你可以用QLineEdit 设置一个文本,当没有文本时显示 - 请参阅QLineEdit::placeholderText。
输入掩码
使用QLineEdit 的另一种方法是设置inputMask,但它会更改光标并且需要特定数量的字母。
带有 QLabel 的后缀
如果你知道符号的最大数量并且想要做一个后缀,你可以用另一个QLabel得到它:
1.限制length的文字在右边有一定的空闲空间。
2. 将QLabel放在QLineEdit的右侧,并在其中输入一个后缀文本。
注意:如果 QLineEdit 位于布局内部,您将无法在 QtDesigner 中将 QLabel 放在 QLineEdit 上。在这种情况下,您可以在布局中添加QWidget 而不是QLineEdit,并将QLineEdit 和QLabel 放在这个没有布局的小部件中。您也可以在代码中创建QLabel:
QLabel* label = new QLabel(this);
label->setText("kg");
label->move(lineEdit->rect().right() - label->width() - 3, lineEdit->rect().center().y() - label->height() / 2);
自定义小部件
添加后缀和前缀最灵活的方法是创建一个继承自QWidget的新类添加两个QLabels(前缀和后缀)信息,在它们之间添加QLineEdit并使用css使它们看起来就像一个单一的QLineEdit。
在这张图片上:前缀和后缀是QLabels。 _some_text_ 是QLineEdit,名为lineEdit,并且它们都在一个名为complexLineEdit 的QWidget 中,处于水平布局中。
这是我用于上图的 css:
QWidget#complexLineEdit
{
border-top: 1px solid #CCCCCC;
border-left: 1px solid #DDDDDD;
border-right: 1px solid #DDDDDD;
border-bottom: 1px solid #DDDDDD;
background-color: white;
}
QWidget#complexLineEdit QLineEdit#lineEdit
{
border: 0px;
}
您可以使用它来使其与QLineEdit 更加相似。