我正在使用基于qml的弹出通知系统开发混合qml / qwidget应用程序。通知存储在列表模型中,我使用QML np.right_shift(a,16).astype(np.uint16)
>>> array([1], dtype=uint16)
来创建和处理弹出窗口。
我的问题是,每次弹出新通知时,它都会从主寡妇那里抢走焦点。请注意,我正在使用QMainWindow作为应用程序的主窗口。
以下是QML代码段:
ALTER TABLE
变量Instantiator
是Instantiator {
id: instantiator
model: notificationCenter
delegate:
Window {
id: notificationWindow
color: "transparent"
...
- 派生对象,包含所有有效通知和一些设置,包括通知列表:
notificationCenter
它还包含QAbstractListModel
和QList <iNotification *> m_notifications;
来加载带有通知界面的QML代码。
使用QML窗口Y坐标的动画实现Popup。在向列表QQmlEngine
函数添加新通知后,使用默认QQmlComponent
创建通知对象,该函数会重新计算所有通知的Y坐标并为所有通知窗口设置动画:
y = QApplication::desktop()->availableGeometry().height() - 10
因此弹出窗口本身由recalculateGeometry
向窗口标志添加Behavior on y {
NumberAnimation {
duration: 300
}
}
无效。
UPD: 我设法解决了这个问题。窗口窃取的重点是以下标志:
Instantiator
但是(令人惊讶的是)没有通过以下标志窃取焦点:
Qt.WA_ShowWithoutActivating
答案 0 :(得分:0)
找到解决方案,使用
flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Popup
而不是
flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.WA_ShowWithoutActivating