QLineedit 相关操作

在界面上拉一个 LINEEDIT 控件,和几个按钮:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMessageBox>
#include <QLineEdit>
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    // QLineEdit 是一个单行文本编辑框
    ui->lineEdit->setText("The QLineEdit widget is a one-line text editor.");
}
 
Widget::~Widget()
{
    delete ui;
}
 
// 向左删除一位字符
void Widget::on_btnBackspace_clicked()
{
    // void QLineEdit::backspace()
    // 如果 lineEdit 中没有选中文本,则删除光标左侧的一个字符;
    // 如果选择了任何文本,则将光标移动到所选文本的开头,并从移动到的新位置开始,删除左侧的一个字符;
    ui->lineEdit->backspace();
}
 
// 向左选择一位字符
void Widget::on_btnCursorBackward_clicked()
{
    // void QLineEdit::cursorBackward(bool mark, int steps = 1)
    // 向左移动光标,移动的字符个数由参数 steps 决定,默认为 1,即向左移动一个字符;
    // 如果参数 mark 为 true,则光标向左移动过程中 经过的每一个字符都处于选中状态;
    // 如果参数 mark 为 false,则清除选中的内容;
    ui->lineEdit->cursorBackward(true, 1);
    
    // void QLineEdit::cursorForward(bool mark, int steps = 1) 
    // 用法和 cursorBackward 一样,只不过是改成光标向右移动而已;
    
    // 获取当前光标所在的位置
    int position = ui->lineEdit->cursorPosition();
    qDebug() << "当前光标位置:" << QString::number(position);
}
 
// 向左选择一个单词
void Widget::on_btnCursorWordBackward_clicked()
{
    // void QLineEdit::cursorWordBackward(bool mark)
    // 将光标向左移动一个单词;如果参数 mark 为 true,则该单词处于选中状态;
    ui->lineEdit->cursorWordBackward(true);
    
    // void QLineEdit::cursorWordForward(bool mark)
    // 用法和 cursorWordBackward 一样,只不过把光标改成向右移动;
}
 
// 删除光标右侧一个字符
void Widget::on_btnDel_clicked()
{
    // 如果没有选择文本,则删除光标右侧的一个字符。
    // 如果选择了任何文本,测试发现,选择文本的方式不同,删除的效果也不同:
    // 1、如果用鼠标从左向右选择文本,则光标移动到选中文本的右侧,然后再把光标右侧的一个字符删除;
    // 2、如果用鼠标从右向左选择文本,则光标移动到选中文本的左侧,然后再把光标右侧的一个字符删除;
    //    即用鼠标选择文本时,调用 del() 方法是会从光标最后在所的位置开始,删除光标右侧的一个字符;
    // 3、如果使用 cursorBackward 或者 cursorWordBackward 方法向左选择字符 或 单词时,
    //    调用 del() 方法时,会将选中的所有字符全部删除;
    ui->lineEdit->del();
}
 
// 取消任何选定的文本。
void Widget::on_btnDeselect_clicked()
{
    ui->lineEdit->deselect();
}
 
// 获取显示的文本
void Widget::on_btnDisplayText_clicked()
{
    // displayText() 方法用于获取显示的文本;
    // 如果 echoMode 是常规的,它将返回与 text() 相同的结果;
    // 如果 echoMode 是 Password 或 PasswordEchoOnEdit,它将返回一个与平台相关的密码掩码字符串,
    //    字符串大小为 text().length();
    // 如果 echoMode 是 NoEcho,则返回空字符串;
    
    QString text = ui->lineEdit->text();
    qDebug() << "text():" << text.toUtf8().data();
    QString disText = ui->lineEdit->displayText();
    qDebug() << "displayText():" << disText.toUtf8().data();
}
 
// 选中从光标到行尾的所有字符
void Widget::on_btnEnd_clicked()
{
    // 将光标移动到行尾;
    // 如果参数为 true,则从光标位置开始到行尾的所有字符都将被选中;
    // 如果参数为 false,则移动光标时,取消任何已经选中的文本;
    ui->lineEdit->end(true);
    
    // void QLineEdit::home(bool mark)
    // 用法和 end() 一样,只不过是将光标移动到行首;
}
 
// 插入数据
void Widget::on_btnInsert_clicked()
{
    // 从当前光标所在位置插入数据
    ui->lineEdit->insert("锄禾日当午");
}
 
// 获取选中的文本;如果未选中,返回空字符串;
void Widget::on_btnSelectedText_clicked()
{
    // 测试发现:点击按钮时,获取不到用鼠标选中的文本内容,
    // 只能获取到 cursorBackward、cursorWordBackward、end 等方法选中的文本;
    // 这是因为点击按钮时,焦点变到按钮上了,lineEdit 失去焦点了,即用鼠标选中的内容消失了;
    // 而用 cursorBackward、cursorWordBackward、end 等方法选中的文本内容还是处于选中状态;
    QString text = ui->lineEdit->selectedText();
    qDebug() << "当前选中的文本:" << text.toUtf8().data();
}
 
// 设置居中显示
void Widget::on_btnAlignment_clicked()
{
    ui->lineEdit->setAlignment(Qt::AlignCenter);
}
 
// 显示清除按钮
void Widget::on_btnShowClearBtn_clicked()
{
    // true:表示在 lineEdit 不为空时,在控件尾部显示一个清除按钮;
    // false:则不会显示清除按钮(默认);
    ui->lineEdit->setClearButtonEnabled(true);
}
 
// 设置回显模式
void Widget::on_btnEchoMode_clicked()
{
    // QLineEdit::Normal:常规模式,lineEdit 用于显示文本信息(默认);
    // QLineEdit::NoEcho:不显示任何信息(即使输入信息,也不会显示);
    // QLineEdit::Password:显示平台相关的密码掩码字符,而不是实际输入的字符;
    // QLineEdit::PasswordEchoOnEdit:在编辑时显示正常字符,一旦退出编辑状态则显示密码字符;
    ui->lineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
}
 
// 设置允许显示的最大字符数
void Widget::on_btnMaxLength_clicked()
{
    ui->lineEdit->setMaxLength(50);
}
 
// 设置占位符(即提示信息)
void Widget::on_btnPlaceholderText_clicked()
{
    ui->lineEdit->clear();                          // 清除 lineEdit 上的文本信息
    ui->lineEdit->setPlaceholderText("请输入密码");  // 设置提示信息
    ui->lineEdit->setFocus();                       // 设置 lineEdit 获取焦点
}
 
// 设置只读
void Widget::on_btnReadOnly_clicked()
{
    ui->lineEdit->setReadOnly(true);
}
 
// 常用信号
void Widget::on_btnSignal_clicked()
{
    // 光标位置改变触发的信号
    connect(ui->lineEdit, &QLineEdit::cursorPositionChanged, [=](int oldPos, int newPos){
        qDebug() << "cursorPositionChanged 信号:" << QString::number(oldPos) << QString::number(newPos);
    });
    
    // 编辑结束触发的信号
    connect(ui->lineEdit, &QLineEdit::editingFinished, [=](){
        qDebug() << "editingFinished 信号:" << ui->lineEdit->text();
    });
    
    // 选择文本改变时触发的信号
    connect(ui->lineEdit, &QLineEdit::selectionChanged, [=](){
        // 输出选中的文本信息:
        qDebug() << "selectionChanged 信号:" << ui->lineEdit->selectedText();
    });
}
 
// 常用槽函数
void Widget::on_btnSlot_clicked()
{
//    void	clear()                     // 清空
//    void	copy() const                // 拷贝(将选中的文本复制到剪贴板,前提 echoMode 是 Normal)
//    void	cut()                       // 剪切(将选中的文本复制到剪贴板,并删除原文本,前提 echoMode 是 Normal)
//    void	paste()                     // 粘贴(将剪贴板的文本插入到当前光标所在的位置,如果 lineEdit 不是只读的,那么插入的时候会删除 lineEdit 中已选中的任何文本)
//    void	redo()                      // 重复最后一个操作
//    void	selectAll()                 // 选择所有文本,并将光标移动到末尾
//    void	setText(const QString &)    // 设置文本内容
//    void	undo()                      // 撤销最后一个操作
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值