qt编辑文本框禁止复制粘贴功能

class mylineedit: public QLineEdit
{
    Q_OBJECT
public:
   mylineedit();

    explicit mylineedit(QWidget *parent = 0);

protected:
    //重写mousePressEvent事件
    void mousePressEvent(QMouseEvent *event) override;
    void keyPressEvent(QKeyEvent *event) override;
    void contextMenuEvent(QContextMenuEvent* event) override;
signals:
    //自定义clicked()信号,在mousePressEvent事件发生时触发
    void clicked();

public slots:
};

mylineedit::mylineedit(QWidget *parent) :
    QLineEdit(parent)
{
    setEchoMode(QLineEdit::Password);
}

//重写mousePressEvent事件,检测事件类型是不是点击了鼠标左键
void mylineedit::mousePressEvent(QMouseEvent *event)
{
    //如果单击了就触发clicked信号
    if (event->button() == Qt::LeftButton)
    {
        //触发clicked信号
        emit clicked();
    }
    //将该事件传给父类处理
    QLineEdit::mousePressEvent(event);
}

void mylineedit::contextMenuEvent(QContextMenuEvent *event)
{
    Q_UNUSED(event);
}

void mylineedit::keyPressEvent(QKeyEvent *event)
{
    if(event->matches(QKeySequence::SelectAll) || event->matches(QKeySequence::Copy) || event->matches(QKeySequence::Paste) || event->matches(QKeySequence::Cut))
    {
        return;
    }
    QLineEdit::keyPressEvent(event);
}

你可能感兴趣的:(QT,qt,开发语言)