读书人

QDialog 失去焦点,该如何解决

发布时间: 2014-01-23 14:48:04 作者: rapoo

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也没有作用
[解决办法]

我试了一下是可以的,你多贴些代码
[解决办法]
dlg->setWindowModality(Qt::ApplicationModal);
[解决办法]
你好,你的代码我已经看过了.
修改成这个样子.
    
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.现在还不成熟.
[解决办法]
引用:
Quote: 引用:

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

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


没有

读书人网 >QT开发

热点推荐