当前位置:编程学习 > wap >>

QThreeWidget QTreeView 响应doubleClicked消息中弹出一个QDialog对话框,QDialog失去焦点

connect(m_pList,SIGNAL(doubleClicked(const QModelIndex &)),
            this,SLOT(OnDoubleClick(const QModelIndex&)));


OnDoubleClick(const QModelIndex& i_indexMode)
{
   QDialog*  dlg= new QDialog;
   dlg->exec();
   delete dlg;
}

对话框弹出后对话框上面的按钮鼠标移动到上面不能显示hover状态,如果点一下再移上去就可以显示hover状态了。
而且对话框执行完成退出了,主窗口也失去焦点,也需要用鼠标点击一下才会获取焦点。
我在event里面实现不会有这个问题,我用上面这种方式就会有,各位大神能不能解答一下。 Qt --------------------编程问答-------------------- 强制setFocus试试 --------------------编程问答--------------------
引用 1 楼 heksn 的回复:
强制setFocus试试

我试过了,不行。主要是不太了解Qt的事件传递机制。又没时间阅读源码,哪位能帮帮忙啊,这种情况还是比较常见的吧 --------------------编程问答-------------------- dlg->setFocusPolicy(Qt::StrongFocus) --------------------编程问答--------------------
引用 3 楼 donglangwudi 的回复:
dlg->setFocusPolicy(Qt::StrongFocus)

或者给
QDialog*  dlg= new QDialog(this);
   dlg->exec();
   delete dlg;
--------------------编程问答--------------------
引用 4 楼 donglangwudi 的回复:
Quote: 引用 3 楼 donglangwudi 的回复:

dlg->setFocusPolicy(Qt::StrongFocus)

或者给
QDialog*  dlg= new QDialog(this);
   dlg->exec();
   delete dlg;

是十分感谢您的回答,我开始也怀疑是没有指定父窗口的,但是试了一下还是不想,我试过您的两种方法都不行,您这里可以吗
补充:移动开发 ,  Qt
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,