首页 文章

Qt:错误输入的工具提示

提问于
浏览
0

我有一个QLineEdit,我在其上设置了一个QRegExpValidator,它允许用户在单词之间只输入一个空格 .
现在我希望每当用户尝试输入多个空格时,QLineEdit的工具提示应该显示,但我没有得到任何方法来实现它 .

Thanx :)

2 回答

  • 0

    似乎没有直接的方法来执行你想要的 . 上面做的一种方法是处理 QLineEdittextChanged() signal . 然后,您可以使用 QRegExp::exactMatch() 函数检查该正则表达式的字符串,如果它不匹配,则显示工具提示 .

    连接信号..

    ...    
    connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(onTextChanged(QString)));
    ...
    

    你的插槽在这里..

    void MainWindow::onTextChanged(QString text)
    {
        QRegExp regExp;
        regExp.setPattern("[^0-9]*");  // For example I have taken simpler regex..
    
        if(regExp.exactMatch(text))
        {
            m_correctText = text;    // Correct text so far..
            QToolTip::hideText();
        }
        else
        {
            QPoint point = QPoint(geometry().left() + ui->lineEdit->geometry().left(),
                                  geometry().top() + ui->lineEdit->geometry().bottom());
    
            ui->lineEdit->setText(m_correctText);   // Reset previous text..
            QToolTip::showText(point,"Cannot enter number..");
        }
    }
    
  • 2

    我不会害怕你必须弹出一个自定义工具窗口(即无父级 QWidget )才能达到预期的效果 .

    如果你想像标准的工具提示那样设置你自己的弹出窗口, QStyle 应该有一些东西 . 如果有疑问,请阅读Qt源代码,在该源代码中呈现工具提示 . 那将告诉你使用哪些样式元素 .

相关问题