我在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)