QT输入框只能输入数字
时间: 2023-10-19 09:20:53 浏览: 188
以下是一种实现方法:
使用Qt的QLineEdit控件,并连接其textChanged()信号到一个槽函数中。在槽函数中,使用正则表达式判断输入的内容是否为数字,如果不是数字,则将该字符从文本框中删除。
示例代码如下:
```c++
#include <QLineEdit>
#include <QRegExpValidator>
class NumberLineEdit : public QLineEdit {
Q_OBJECT
public:
NumberLineEdit(QWidget* parent = nullptr) : QLineEdit(parent) {
QRegExpValidator* validator = new QRegExpValidator(QRegExp("[0-9]*"), this);
setValidator(validator);
connect(this, &QLineEdit::textChanged, this, &NumberLineEdit::onTextChanged);
}
private slots:
void onTextChanged(const QString& text) {
if (text.isEmpty()) {
return;
}
QRegExp rx("[0-9]*");
if (!rx.exactMatch(text)) {
int pos = cursorPosition();
setText(text.remove(pos - 1, 1));
setCursorPosition(pos - 1);
}
}
};
```
使用该控件的示例代码如下:
```c++
NumberLineEdit* edit = new NumberLineEdit();
```
阅读全文