首页| 论坛| 消息

标题:怎么解决QComboBox下拉菜单和自定义窗口不同步的问题?
作者:accordion123
日期:2016-07-23 10:37
内容:

比如上图,我自定义了一个窗口,把标题栏和边框全部取消了,然后我重写了mousePressEvent和mouseMoveEvent
void LogInDialog::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void LogInDialog::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton && event->button() == Qt::NoButton)
{
move(event->globalPos()- dragPosition);
event->accept();
}
}结果我发现了像图里一样的状况,具体重现BUG的方法是点下拉键,然后迅速甩鼠标到某个地方,然后窗口动了,下拉菜单才出来,搞了好久都不知道怎么弄
1. 我尝试用event->globalPos() - frameGeometry().topLeft()把中间部分的区域范围算出来,然后如果在区域点击,则mousePressEvent记录下来,然后在move里面做判断,结果我调试的时候发现只要我动作大一点还是会出现问题,而且我发现我点了下拉菜单以后程序压根不进Pressed,而是直接进的Move
2. 然后我给highlighted()做个槽,让他出现下拉动作的时候立马设标志,然后move不调用,还是不行,应该是槽的调用时随机的问题。。。
请问这样的问题如何解决?


#1 [6gongzi 07-25 08:34]
点下拉键,焦点会在combo上,这种情况下,鼠标移动是不应该移动主窗口的
只有在下拉框出现以后,在能移动窗口
这是焦点切换的流程问题,你要考虑用户的使用情况
#2 回 6gongzi 的帖子 [accordion123 07-25 20:15]
6gongzi:点下拉键,焦点会在combo上,这种情况下,鼠标移动是不应该移动主窗口的
只有在下拉框出现以后,在能移动窗口
这是焦点切换的流程问题,你要考虑用户的使用情况 (2016-07-25 08:34) 
所以怎么才能把让用户在点击combo的时候焦点一定是在combo上?

回复 发表
主题 版块