• 9530阅读
  • 5回复

请教如何在QLineEdit中显示鼠标所指字符串的位置,这些字符串用逗号隔开 [复制链接]

上一主题 下一主题
离线叹叹想
 
只看楼主 正序阅读 楼主  发表于: 2008-11-17
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
各位tx,我想实现一个这样的功能
首先,文本显示在QLineEdit中,文本的格式都是aaaa,bbb,cd,d,e,f.......用逗号隔开的内容,我希望鼠标在放到aaaa时,弹出提示显示1(代表它处于一号位置),放在bbb,弹出提示显示2(代表它处于2号位置),依此类推,逗号也就是用来隔开位置的标志。
不知道QT中能不能实现。大家帮忙想想办法。
离线孤※少
只看该作者 5楼 发表于: 2012-04-27
那应该怎样选中鼠标单击处的字符呢?比如LineEdit内容是00:00:00:00,我单击哪组00时就选中状态显示00?
离线叹叹想
只看该作者 4楼 发表于: 2008-11-19
我试了,可以实现的,谢谢大家
离线sbtree
只看该作者 3楼 发表于: 2008-11-18
重新实现了QLineEdit的mouseMoveEvent 函数
void linetext::mouseMoveEvent ( QMouseEvent * event )
{
    QPoint pos = event->pos();
    int index = cursorPositionAt ( pos );
    if(index > 0)
    {
        QString text = displayText();
        QString aaa(text.left(index));
        int len1 = aaa.size();
        aaa.remove(",");
        int len2 = aaa.size();
        QMessageBox::information(this,"test",QString("current pos: %1").arg(len1-len2+1));
    }
}
windows 7 + VC++2008 + Qt4.5.2
离线sbtree
只看该作者 2楼 发表于: 2008-11-18
引用第1楼chaoscxm于2008-11-17 16:46发表的  :
cursorPositionAt(QPoint pos) 来获取当前鼠标所在位置的游标位置。pos传鼠标的pos(QCursor.pos()方法),
然后通过QString的split方法结合size()方法来计算出具体的位置。

不会这么简单吧,这里还涉及到文字的宽度,当前输入框中显示的范围(文字长度超出了文本框的长度)以及文本区的位置等

试了一下,可以做到,多谢,学习了
[ 此贴被sbtree在2008-11-18 00:42重新编辑 ]
windows 7 + VC++2008 + Qt4.5.2
离线chaoscxm
只看该作者 1楼 发表于: 2008-11-17
cursorPositionAt(QPoint pos) 来获取当前鼠标所在位置的游标位置。pos传鼠标的pos(QCursor.pos()方法),
然后通过QString的split方法结合size()方法来计算出具体的位置。
帖子签名(将在每个帖子下方显示)
快速回复
限100 字节
 
上一个 下一个