2011-12-12 54 views
1

我有一个主窗口(在MS Windows上),我想要有自由屏幕移动的子窗口或子面板。我可以使用对话框和Qt::splashscreen标志,但是当我在这些子窗口上时,我失去了主窗口的焦点标题。有什么窍门可以做我想做的事吗? (像多焦点...) 也许这是不可能的?Qt /我怎样才能有子窗口而不失主窗口焦点?

回答

0

我不知道你失去焦点是什么意思。

当我创建一个具有多个窗口的应用程序时,这就是我所做的:在子窗口小部件中,我将父窗口设置为主窗口,并设置Qt :: Tool标志。它具有多种效果:窗口管理器将其视为一个窗口,并且当您关注任何窗口时,所有窗口都会升起。

+0

MDI方法不是我想要的,除非在这种情况下我可以在mdi-main-window之外拥有子窗口。我认为我必须做的是创建一个没有标题标题的主窗口,编写正确的代码来模拟接收和失去焦点。例如,我看到在这个方向上运行的应用程序以这种方式使用,例如dreamweaver和autocad。谢谢。 – tonnot

0

你想QMdiArea?或者一个focus proxy

在Qt中,所有顶级窗口都是独立的,没有一个是“主”。如果你想提名一个作为主窗口,并从其他人那里窃取焦点,那么你将不得不implement that manually

0

听起来就像你只是想拥有小部件,你可以在父窗口小部件/窗口上自由移动,而无需在本地Windows窗口(...)之间调用“窗口焦点已更改”事件。

我不知道是否有应该是一个现成的解决方案,但增加了一些抢/移动/调整大小事件,以一个小部件的边缘不应辛苦,还是?

我只是在某些区域捕获mousedown/up事件(这些应该可能是它们自己的小部件,并带有指向父可移动小部件的链接),并在鼠标移动时调整大小/移动窗口。