小编BOO*_*tak的帖子

在拖动/调整窗口大小时调用窗口上的isActive()时,false返回.(X11,Qt 5.4.0)

我在Linux(X11)上使用Qt 5.4.0,我需要确定,如果我的窗口是活动的.所以,我编写了示例代码,如下所示.如果该代码在Windows上编译,则仅当窗口未真正激活时,它才会在控制台中记录"false".但是在linux(X11)上,当我开始拖动或调整窗口大小时,它也会记录"false".为什么会发生这种情况以及如何解决这个问题?我想知道,当我的窗口真的处于非活动状态时,它处于活动状态,但被拖动/调整大小.

code snippet(C++):

void MainWindow::changeEvent(QEvent *e) {
    if (e->type() == QEvent::ActivationChange) {
        if (this->isActiveWindow()) {
            std::cout << "True" << std::endl;
        } else {
            std::cout << "False" << std::endl;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

PyQt5上的相同代码:

import sys
from PyQt5.QtCore import Qt, QEvent
from PyQt5.QtWidgets import QWidget, QApplication


class TransparentWidget(QWidget):
    def __init__(self):
        super(TransparentWidget, self).__init__()

    def changeEvent(self, e):
        if e.type() == QEvent.ActivationChange:
            print(self.isActiveWindow())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    transparent_widget = TransparentWidget()
    transparent_widget.show()
    app.exec_()
Run Code Online (Sandbox Code Playgroud)

c++ linux x11 qt pyqt

5
推荐指数
1
解决办法
225
查看次数

标签 统计

c++ ×1

linux ×1

pyqt ×1

qt ×1

x11 ×1