如何在Qt C ++中的QLineEdit中放置静态文本,以使它不能被删除,并且当我写QLineEdit时,不应将它们隔开。
没有常规方法可以在QLabel
中放置前缀或后缀。
就QLineEdit
而言,您可以设置一个文本,当没有文本指示时将显示该文本-请参阅QLineEdit::placeholderText
。>
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9IajM4cC5wbmcifQ==” alt =“在此处输入图像描述”>
使用QLineEdit
的另一种方法是设置inputMask
,但是它将更改光标,并且需要特定数量的字母。
如果您知道最大数量的符号并想添加一个后缀,则可以使用另一个QLabel
来获得它:1.限制文本的length
在右边具有一定的可用空间。2.将QLabel
放在QLineEdit
的右侧,然后在其中输入后缀文本。
注意:如果QLabel
位于布局内,则无法将QLineEdit
放在QtDesigner中的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);
<< 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
,并且全部位于水平布局中的名称为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; }
您可以使用它来使其更类似于
QLineEdit
。
每次更改文本后,我都会动态地重新添加后缀。