• 8077阅读
  • 4回复

[讨论]在QLineEdit中点击鼠标右键不触发focusInEvent? [复制链接]

上一主题 下一主题
离线翩翩布衣
 

只看楼主 倒序阅读 楼主  发表于: 2011-05-30
我用一个QLineEdit做一个输入框,输入框在没有任何输入的情况下,有个提示信息。
类似于这个论坛中的收索框(就是提示信息是“搜索其实很简单!(^_^)”那个框)。
当鼠标点击的时候这个提示信息就消失,点击其他地方就显示出来。

我用focusInEvent和focusOutEvent来处理这两种情况。
但是现在遇到一个问题了,就是在输入框中当点击鼠标右键的时候也会触发focusInEvent函数。

可是我只想让鼠标左键有效.

经过我的实验,发现MousePressEvent居然是在focusInEvent函数调用以后才调用的,
所以所通过过滤MousePressEvent中Qt::RightButton的方法行不通。望高手指点迷津
离线翩翩布衣

只看该作者 1楼 发表于: 2011-05-30
希望给出具体实现代码
离线dbzhang800

只看该作者 2楼 发表于: 2011-05-31
1. 既然focusIn 先于 mousepress,那你就直接根据鼠标左键点击来设置作为提示信息消失的条件不就行了?

2. focus的规则受 FocusPolicy 控制,你也可以考虑从这儿入手
离线alexltr

只看该作者 3楼 发表于: 2011-05-31
建议你使用placeholderText

placeholderText : QString
This property holds the line edit's placeholder text.
Setting this property makes the line edit display a grayed-out placeholder text as long as the text() is empty and the widget doesn't have focus.
By default, this property contains an empty string.
This property was introduced in Qt 4.7.
Access functions:
QString    placeholderText () const
void    setPlaceholderText ( const QString & )
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线翩翩布衣

只看该作者 4楼 发表于: 2011-05-31
太感谢alexltr了,Qt4.7加入了这个新函数,非常不错
快速回复
限100 字节
 
上一个 下一个