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

问题描述 投票:4回答:2

如何在Qt C ++中的QLineEdit中放置静态文本,以使它不能被删除,并且当我写QLineEdit时,不应将它们隔开。

macos qt qlineedit
2个回答
6
投票

没有常规方法可以在QLabel中放置前缀或后缀。

占位符

QLineEdit而言,您可以设置一个文本,当没有文本指示时将显示该文本-请参阅QLineEdit::placeholderText。>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9IajM4cC5wbmcifQ==” alt =“在此处输入图像描述”>

InputMask

使用QLineEdit的另一种方法是设置inputMask,但是它将更改光标,并且需要特定数量的字母。

“在此处输入图像描述”

带有QLabel的后缀

如果您知道最大数量的符号并想添加一个后缀,则可以使用另一个QLabel来获得它:1.限制文本的length在右边具有一定的可用空间。2.将QLabel放在QLineEdit的右侧,然后在其中输入后缀文本。

注意:如果QLabel位于布局内,则无法将QLineEdit放在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);

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9vd2lsVS5wbmcifQ==” alt =“在此处输入图像描述”>

自定义小部件

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9zWktJbS5wbmcifQ==” alt =“在此处输入图像描述”>

在此图像上:前缀和后缀为QLabels。 _some_text_的名称为QLineEdit,名称为lineEdit,并且全部位于水平布局中的名称为QWidgetcomplexLineEdit中。

这是我用于上图的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


0
投票

每次更改文本后,我都会动态地重新添加后缀。

© www.soinside.com 2019 - 2024. All rights reserved.