1、设置输入限制
QLineEdit lineedit = new QLineEdit(this);
QRegExp rx("([a-zA-Z0-9])+([0])");//设置为只能输入数字和英文
QRegExpValidator *pRevalidotor = new QRegExpValidator(rx,this);
lineedit->setValidator(pRevalidotor);
lineedit->setMaxLength(10); //设置lineEdit最大长度
2、有时候限制判断比如10-100;这个时候就需要使用输入完成判断来判断输入的值是否为0-9
即使用editingFinished()信号光标进入和离开编辑框来进行判断数据,这个时候序号设置为范围是0-100,设置<10的时候=10,当输入0-9时才会发送这个信号
注:记得设置窗口为Qt::ClickFocus 0x2 接受鼠标单击做焦点
enum Qt::FocusPolicy
This enum type defines the various policies a widget can have with respect to acquiring keyboard focus.
Constant Value Description
Qt::TabFocus 0x1 接受Tab键焦点
Qt::ClickFocus 0x2 接受鼠标单击做焦点
Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受Tab键和鼠标单击做焦点
Qt::WheelFocus StrongFocus | 0x4 滑轮作为焦点选中事件
Qt::NoFocus 0 不接受焦点
3、输入小数
lineedit->setValidator(new QDoubleValidator(-100.0,100.0,2,this));//其中2表示只能输入2位小数
4、获取焦点状态
QLineEdit中因为QLineEdit::editingFinished存在一些问题,输入的值不在范围内焦点离开时就不会发送信号。
第一种方法:
新建C++ clss,重写QLineEdit类,
focusInEvent(QFocusEvent *e)//焦点进入进入时信号
focusOutEvent(QFocusEvent *e)//为焦点离开时信号
在focusOutEvent内进行判断离开时编辑框中的数据是否正确
第二种方法:
使用过滤器,
在创建编辑框后添加
ui->lineEdit1->installEventFilter(this); //在窗体上为lineEdit1安装过滤器
bool Core::eventFilter(QObject *watched, QEvent *event)
{
if (watched==ui->lineEdit1) //首先判断控件(这里指 lineEdit1)
{
if (event->type()==QEvent::FocusIn) //然后再判断控件的具体事件 (这里指获得焦点事件)
{
QPalette p=QPalette();
p.setColor(QPalette::Base,Qt::green);
ui->lineEdit1->setPalette(p);
}
else if (event->type()==QEvent::FocusOut) // 这里指 lineEdit1 控件的失去焦点事件
{
QPalette p=QPalette();
p.setColor(QPalette::Base,Qt::white);
ui->lineEdit1->setPalette(p);
}
}
return QWidget::eventFilter(watched,event); // 最后将事件交给上层对话框
}
在焦点离开处判断编辑框中内容是否正确
5、设置无边框透明和提示
ui->lineEdit->setStyleSheet("QLineEdit{background-color:transparent}"//透明
"QLineEdit{border-width:0;border-style:outset}");//无边框
ui->lineEdit->setPlaceholderText("a-z A-Z 0-9 - and Space");//提示
6、设备光标在编辑框中和全选
ui->lineEdit->setFocus();
QTimer::singleShot(0, ui->lineEdit, &QLineEdit::selectAll);
7、设置滚动条
设置方式和QT开发之QListWidget控件一样,但是还需要加上才能生效
#include <QScrollBar>
#include <QStyle>
ui->textEdit->verticalScrollBar()->style()->polish(ui->textEdit->verticalScrollBar());