Qt:错误输入的工具提示

时间:2012-05-14 10:59:21

标签: qt user-interface tooltip qlineedit

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

Thanx:)

2 个答案:

答案 0 :(得分:2)

似乎没有直接的方法来执行你想要的东西。上述一种方法是处理 QLineEdit textChanged()信号。然后,您可以使用 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..");
    }
}

答案 1 :(得分:0)

我不记得显示工具提示的显式API。我担心你不得不弹出一个自定义工具窗口(即无父QWidget)来实现所需的结果。

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