问题标签 [qwindow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QWindow 提示不起作用
我试图隐藏 QWindow 对象的栏,但它不起作用。目的是在 MDI 区域中的 QWindows 对象上显示来自 Ogre3D 的场景。
这是主窗口中的代码:
它看起来像这个截图
有人知道出了什么问题吗?谢谢您的支持。
c++ - 在 Qt 中创建自定义类类型的窗口
这是我在这里的第一个问题,所以我尽量不要听起来很愚蠢!
解释:
我在 Qt 中有一个主窗口,它有一个按钮可以在主窗口中创建(子?)窗口。这可以根据用户的需要进行多次,并且每个子窗口都显示相同的属性/项目集。我认为编写一个类来保存所有这些属性将是一种聪明的方法(这将继承主窗口类),因为子窗口的每个实例都会自动获取属性。我正在使用一个插槽来创建每个实例。
问题:
除了所需的属性之外,我应该向子窗口类添加什么来让 Qt 知道如果我创建了该类型的对象,它应该打开一个窗口?
例如,假设我在一个看起来像这样的头文件中实现了所有子窗口属性:
那么我将如何实现我的插槽?像这样?
我的问题是我没有看到任何代码表明这window
是一个单独的窗口。我可以看到它是 type ChildWindow
,但是否只包括QDialog
给它show()
功能?
编辑:
我意识到第一个建议是尝试看看这是否有效,但在不太可能的情况下它有效,我不会学到任何东西,我仍然不知道它为什么有效,如果没有,我会回来在这里问同样的问题。我希望你们能理解。
编辑2:
所以我猜包括QDialog
没有做到这一点
编辑 3:
如果我将它添加到ChildWindow
构造函数
我是否也必须在插槽定义中做同样的事情?
python - 在子 multiprocessing.Process (Python3) 中打开 PyQt5 窗口
我正在尝试在新进程中打开第二个窗口,以便不使用 PyQt5 冻结主窗口。multiprocessing.Process
出于这个原因,我定义了一个继承自窗口并显示窗口的新类。这是主要代码:
进程被创建并获得一个 PID。调用 run() 函数时,会显示消息“正在打开窗口..”,但没有其他任何反应。没有窗口,没有错误……我不知道发生了什么。先感谢您!
qt - 如何拦截和取消窗口的最小化?
我的项目中有一个Window
子类,在运行时该实例被创建并完全显示在 QML 端。我知道我可以通过不包含 来防止窗口被最小化WindowMinimizeButtonHint
,flags:
但我实际上需要存在并启用最小化按钮,但能够拦截最小化按钮单击,取消实际最小化,并执行其他操作(仅供参考,我的客户需要这种非标准的窗口行为,而不是我)。
到目前为止,我唯一能够实现的就是处理onWindowStateChanged:
事件,检查是否windowState === Qt.WindowStateMinimized
并show()
从计时器调用(在事件处理程序中直接调用它什么都不做)。这导致窗口向下移动到系统托盘,然后突然恢复正常。
有没有办法做到这一点,比如OnMinimized
可以取消的活动?
编辑:根据 Benjamin T 的回答,我至少是 OSX 解决方案的一部分:
在这个例子中,我能够拦截和取消所有 NSKeyDown 事件(同时让其他事件如鼠标点击等仍然有效)。剩下的问题是我仍然不知道要拦截最小化事件- NSEvent.h 似乎没有任何内容。也许我需要转换到不同类型的事件?
编辑 2 - 工作解决方案:
我无法找到任何方法来正确拦截最小化事件并取消它,所以我的解决方法是拦截窗口上的点击,确定点击是否在最小化按钮(或关闭或缩放按钮)上并取消如果是这样的事件(并向我的 qml 窗口发送点击发生的通知)。我还处理了双击标题栏以缩放窗口并使用 Command-M 键最小化窗口的情况。
第一步是实现一个QAbstractNativeEventFilter
. 在您的标题中:
实施:
然后在 main.cpp 中:
user-interface - PyQT5:如何连续打开和关闭 3 个窗口
我的 GUI 过程中有问题。我有 3 个窗口,它是主窗口 -> 第二个窗口 -> 第三个窗口,然后退出。单击转到第 2 个窗口的按钮时效果很好,但是如果我单击转到第 3 个窗口的按钮,它会崩溃。
整个过程崩溃,没有说任何错误。
这是我的第一个窗口的代码:
这是第二个窗口的代码:
这是第三个窗口的代码:
有人可以告诉我为什么单击按钮时该过程会在第二个窗口中崩溃以及为什么它无法进入第三个窗口?
performance - QOpenGLWindow 和 QOpenGLWidget 在性能上有什么区别?
我一直在研究QOpenGLWindow和QOpenGLWidget这两个类。在 QOpenGLWindow 的文档中它指出:“与 QOpenGLWidget 不同,QOpenGLWindow 不依赖于小部件模块并提供更好的性能。” 在我当前的项目中,我制作了QMainWindow
一个在 Dock Widget 上QDockWidget
带有一个的。OpenGLWidget
对于这个项目,我将需要 GL 部分尽可能高效,所以我想知道是否值得尝试将其转换为QOpenGLWindow
. 但是,我不知道性能差异是什么。如果它是微不足道的,那么我将保留我目前的格式,如果它有很大的不同,那么我会转换它。
有谁知道性能差异是什么?
qt - 上下文菜单事件在 QOpenGLWindow 中不起作用
我正在子类化QOpenGLWindow
(不是QGLWidget
or QOpenGLWidget
)并调用
将其放置在 parent 的布局中QWidget
。
窗口正确显示并且我可以与之交互,但是container
当我在my_opengl_window
. 如果我右键单击窗口与其容器之间的细长边距,我会得到一个上下文菜单。
以上显示我my_opengl_window
正在接收鼠标点击。我也尝试过e->ignore ()
,但父母仍然没有收到上下文菜单事件。
此外,setCursor
对setToolTip
容器小部件没有任何影响。我怀疑这可能是相关的。
如何让这些鼠标事件在QOpenGLWindow
容器上工作?
python - 在 Pyqt5、QWindow 中,showMaximized() 不起作用。为什么?
这是一个很小的简单代码。
在此代码中,self.showMaximized() 不起作用。
即使它那么小,我也不知道为什么。
删除'screen.show()',然后showMaximized() 工作。
macos - 在 MacOS 上使用 cmd + h 隐藏时无法显示() QWindow
我有一个问题,当它被 MacOS 快捷方式隐藏时,我无法提升我的应用程序窗口。它在所有其他情况下都能正常工作。
在我的应用程序中,我调用了 1 个主 qWindow
QWindow* mMainWindow;
,并将以下代码添加到托盘按钮
当我只使用 qtmMainWindow->hide()
然后将其升起时,mMainWindow
工作正常。当应用程序处于活动状态和隐藏时,方法mMainWindow->isActive()
返回正确的状态。true
false
但是当我在mac“cmd + h”中使用内置隐藏应用程序时,无论应用程序是否隐藏,都会mMainWindow->isActive()
返回。true
调用我的操作项无济于事,mMainWindow
始终保持隐藏状态。
有什么解决方案可以解决这个问题吗?我见过人们推荐使用QWidget
而不是QWindow
调用widget->activateWindow()
,但这不是我可以使用的解决方案。