QLineEdit的信号与槽用法
QLineEdit一共有6个信号函数,并不多,很好理解。
1. void cursorPositionChanged( intold, intnew )
当鼠标移动时发出此信号,old为先前的位置,new为新位置。
在文本框中输入一个字符,光标移动一格,触发槽函数
connect(m_pLineEdit, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(label_display(int, int)));
void MainWindow::label_display(int old_pos, int new_pos)
{
QString pos_str1 = QString::number(old_pos, 10);
QString pos_str2 = QString::number(new_pos, 10);
m_plabal->setText("move form "+pos_str1+" to "+ pos_str2);
}
2. void editingFinished()
当 按返回或者回车键时,或者行编辑失去焦点时,发出此信号。
注意:
当QLineEdit设置了validator() orinputMask()函数,验证器or输入掩码,
并按了返回或回车键,
信号只有在 输入内容符合输入掩码 或验证器返回 QValidator::Acceptable时 发出。
connect(m_pLineEdit, SIGNAL(editingFinished()), this, SLOT(label_display()));
在文本框中输入字符完成后,不用点击回车和返回,直接去点击按钮,就会触发editingFinished()信号。
3. void returnPressed()
当 返回或回车键按下时发出此信号,
注意:
当QLineEdit设置了validator() orinputMask()函数,验证器or输入掩码,
并按了返回或回车键,
信号只有在 输入内容符合输入掩码 或验证器返回 QValidator::Acceptable时 发出。
connect(m_pLineEdit, SIGNAL(returnPressed()), this, SLOT(label_display()));
4. void selectionChanged()
当选文本改变时,发出此信号。
5. void textChanged( const QString &text )
当QLineEdit中的文本改变时,发出此信号,text是新的文本。
当通过程序改变文本时,也会触发此信号,例如,setText()
#include <QLabel>
#include <QString>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QLabel *m_plabal;
QString m_str;
private slots:
void label_display(QString str);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QDebug>
#include <QLineEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_plabal = new QLabel(this);
m_plabal->move(400,400);
m_plabal->resize(200, 50);
QLineEdit *m_pLineEdit = new QLineEdit(this);
m_pLineEdit->move(200, 100);
m_pLineEdit->resize(200,50);
m_pLineEdit->setAlignment(Qt::AlignLeft);//文本选择向右对齐
connect(m_pLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(closeWindow(const QString &)));
m_pLineEdit->setText("SetText");//初始化时向LineEdit写入字符串
}
初始化时就触发了textChanged()信号
· void textEdited( const QString &text )
当QLineEdit中的文本改变时,发出此信号,text是新的文本。
当通过程序改变文本时,不会触发此信号。
采用以上相同程序,换成textEdited,结果如图所示:
文本框改变字符串:
更多推荐









所有评论(0)