• 9987阅读
  • 6回复

一个QT中窗口的问题(QWidget::find(WId)) [复制链接]

上一主题 下一主题
离线marslee_suc
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-17
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
我写了两个程序在一个程序中打印出了这个窗口的WId 使用winId()
然后在另外的一个一个程序中使用QWidget::find(Wid)这个方法想要得到这个窗口的指针,但是总是返回的是空,我在同一个程序中使用这样的方法能得到。是不是QWidget::find(Wid)这个方法不是全局的方法?不能遍历所有的窗口呢???
有人遇到同样的问题么?
code :
WId window = 31457955//这个id是绝对正确的,我使用KWininfo能得到这个窗口的名字
QWidget *temp = QWidget::find(window);
if (temp  == null)
{
    qDebug() << "null";
}

结果总是显示空。
[ 此贴被marslee_suc在2008-11-17 21:20重新编辑 ]
离线vrcats
只看该作者 1楼 发表于: 2008-11-18
你那个程序是不是Qt程序?这个API好像只能查到Qt程序的WId。
离线marslee_suc
只看该作者 2楼 发表于: 2008-11-19
是QT的程序,非常的奇怪。
并且好像是在一个进程中new的窗口可以得到
其他进程中的不能得到,并不是在整个窗口树中查找
离线vrcats
只看该作者 3楼 发表于: 2008-11-20
是这样的。你要在整个窗口树查找,可能要先拿到Desktop的指针才行。由于只有kde的Desktop是QWidget,所以可能在其他窗口管理器中不可用
离线marslee_suc
只看该作者 4楼 发表于: 2008-11-25
你的意思就是我先得到desktop的指针然后用desktop->find(WId)来查找?是这样么?
离线tears1134

只看该作者 5楼 发表于: 2010-02-04
我在X11系统中,利用QApplication::desktop()返回的桌面似乎也找不到对应ID的QWidget,迷惑ing.....
明天会更好!
离线tears1134

只看该作者 6楼 发表于: 2010-02-04
"由于只有kde的Desktop是QWidget,所以可能在其他窗口管理器中不可用",  哎!
明天会更好!
快速回复
限100 字节
 
上一个 下一个