首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通知maxlength溢出

如何通知maxlength溢出
EN

Stack Overflow用户
提问于 2018-12-10 02:55:12
回答 1查看 90关注 0票数 1

有没有办法在执行默认处理程序之前连接信号?我正在寻找一种方法来在QLineEdit::textChanged信号之前执行我的函数,以执行关于最大长度限制的通知。

GTK+有connect_before()、connect()和connect_after()。Qt中也有类似的东西吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-10 03:31:39

您可以使用keyPressEvent方法发出自定义信号。

代码语言:javascript
复制
#include <QtWidgets>

class LineEdit: public QLineEdit
{
    Q_OBJECT
public:
    using QLineEdit::QLineEdit;
signals:
    void maxLengthSignal();
protected:
    void keyPressEvent(QKeyEvent *event) override{
        if(!event->text().isEmpty() && maxLength() == text().length())
            emit maxLengthSignal();
        QLineEdit::keyPressEvent(event);
    }
};
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    LineEdit w;
    QObject::connect(&w, &QLineEdit::textEdited, [](const QString & text){
        qDebug()<< text;
    });
    QObject::connect(&w, &LineEdit::maxLengthSignal, [](){
        qDebug()<< "maxLength signal";
    });
    w.setMaxLength(10);
    w.show();
    return a.exec();
}
#include "main.moc"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53695621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档