如何在QLineEdit中放置静态文本(后缀,前缀)?

Pro*_*ing 4 macos qt qlineedit

如何在Qt C++ 中的QLineEdit中放置一个静态文本,以便它不能被删除,当我写入QLineEdit时,它不应该是间隔的.

Eze*_*zee 6

没有常规的方法来放置前缀或后缀QLabel.

占位符

你可以得到的QLineEdit是设置一个文本,当没有文本内容时将显示 - 请参阅QLineEdit::placeholderText.

在此输入图像描述

输入掩码

另一种方法QLineEdit是设置inputMask但它会改变光标并需要特定数量的字母.

在此输入图像描述

Postfix与QLabel

如果您知道最大符号数量并想要制作后缀,则可以使用另一个符号QLabel:
1 length.文本限制为右侧有一定的可用空间.
2.放置QLabel在右侧,然后在QLineEdit其中输入后缀文本.

注意:您将不能够把QLabelQLineEdit在QtDesigner如果QLineEdit是一个布局内.在这种情况下,您可以添加QWidget而不是QLineEdit在布局中放置QLineEditQLabel在此窗口小部件中放置没有布局.您还可以QLabel在代码中创建:

QLabel* label = new QLabel(this);
label->setText("kg");
label->move(lineEdit->rect().right() - label->width() - 3, lineEdit->rect().center().y() - label->height() / 2);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

自定义小部件

添加后缀和前缀的最灵活的方法是创建一个继承自QWidgetadd QLabels(前缀和后缀)信息的新类,QLineEdit在它们之间添加并使用css使它们看起来像单个QLineEdit.

在此输入图像描述

在此图像上:前缀和后缀是QLabels._some_text_已QLineEdit命名,lineEdit并且所有这些都在水平布局中的QWidget命名内complexLineEdit.

这是我用于上图的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;
}
Run Code Online (Sandbox Code Playgroud)

你可以玩它使它更加相似QLineEdit.