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

QDialog 失去焦点

connect(m_pList,SIGNAL(doubleClicked(const QModelIndex &)),
            this,SLOT(OnDoubleClick(const QModelIndex&)));
 
 
OnDoubleClick(const QModelIndex& i_indexMode)
{
   QDialog*  dlg= new QDialog(this);
   dlg->exec();
   delete dlg;
}


当双击qtreeview的列表,弹出对话框。我移动到对话框上面的按钮没有hover状态。我要点击一下对话框才会获取焦点。当退出对话框,主窗口也失去焦点。
搞了好久都不知道是什么原因,会不会是鼠标按下弹起消息被QDialog阻塞了。各位大侠帮帮忙啊。
我重写了QDialog在它的构造函数中调用setforce也没有作用 --------------------编程问答--------------------
我试了一下是可以的,你多贴些代码 --------------------编程问答-------------------- 不会吧,难道又是XP的问题?
编译环境是qt5.02 vs2010
运行环境 xp sp3
我这就是所有代码了。
--------------------编程问答--------------------
引用 1 楼 heksn 的回复:
我试了一下是可以的,你多贴些代码

能不能把您的测试代码发给我试试。
邮箱346558320@qq.com --------------------编程问答--------------------
引用 1 楼 heksn 的回复:
我试了一下是可以的,你多贴些代码

您好,您能把测试代码发给我看看吗。我试了好久还是不行 --------------------编程问答-------------------- dlg->setWindowModality(Qt::ApplicationModal); --------------------编程问答--------------------
引用 5 楼 n7zj0x8 的回复:
dlg->setWindowModality(Qt::ApplicationModal);


引用 1 楼 heksn 的回复:
我试了一下是可以的,你多贴些代码

我上传了代码和图片,请帮我看看,现在这里谢谢了。
http://bbs.csdn.net/topics/390673309 --------------------编程问答-------------------- 你好,你的代码我已经看过了.
修改成这个样子.
    
CDialog dlg(this);
dlg.show();
dlg.setFocus();
dlg.exec();

你之所以在你的CDialog的构造函数里面设置焦点没有用,
是因为没有显示出来的的东西是不会有焦点的.

可以为CDialog 增加这样的成员函数.

class CDialog : public QDialog
{
   public:
    CDialog(QWidget* pParent);
    void Exec()
    {
        this->show();
        this->setFocus();
        this->exec();
    }
};

--------------------编程问答--------------------
引用 7 楼 n7zj0x8 的回复:
你好,你的代码我已经看过了.
修改成这个样子.
    
CDialog dlg(this);
dlg.show();
dlg.setFocus();
dlg.exec();

你之所以在你的CDialog的构造函数里面设置焦点没有用,
是因为没有显示出来的的东西是不会有焦点的.

可以为CDialog 增加这样的成员函数.

class CDialog : public QDialog
{
   public:
    CDialog(QWidget* pParent);
    void Exec()
    {
        this->show();
        this->setFocus();
        this->exec();
    }
};

十分感谢,虽然你这种方法是可以了,但是对话框不是模态的了,打开子对话框同时可以操作主对话框了 --------------------编程问答-------------------- 接受吧,这是Qt5的bug,要么你换Qt4,要么尝试下新版本的Qt5.2.0.
Qt5.现在还不成熟. --------------------编程问答--------------------
引用 9 楼 n7zj0x8 的回复:
接受吧,这是Qt5的bug,要么你换Qt4,要么尝试下新版本的Qt5.2.0.
Qt5.现在还不成熟.

呵呵,只能这样了,难道Qt4没有这个问题? --------------------编程问答--------------------
引用 10 楼 fkeujjpdc 的回复:
Quote: 引用 9 楼 n7zj0x8 的回复:

接受吧,这是Qt5的bug,要么你换Qt4,要么尝试下新版本的Qt5.2.0.
Qt5.现在还不成熟.

呵呵,只能这样了,难道Qt4没有这个问题?


没有
补充:移动开发 ,  Qt
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,