【QT】调整窗口大小时,Widget内组件抽搐

项目场景:

  • GPU型号: NVIDIA GeForce RTX 3050 Ti Laptop
  • VTK版本: 9.2 Release
  • QT版本: Qt 5.15.2 MSVC2019 64bit

问题描述

在ui中拖入Widget组件,并提升为QVTKOpenGLNativeWidget后。调整软件窗口大小时,内部其他组件都会抽搐。详见下面的gif图。

调整软件窗口大小时,内部其他组件都会抽搐。


原因分析:

猜测是因为 OpenGL 不兼容。


解决方案:

在Windows系统中,你可以通过以下步骤更改OpenGL GDI的兼容性级别:

  1. 打开图形驱动程序控制面板,可以通过右键单击桌面空白处并选择 NVIDIA Control Panel
  2. 在图形驱动程序控制面板中,找到 3D 设置下的管理 3D 设置
  3. 全局设置下找到OpenGL GDI 兼容性,并设置为优先兼容性。
  4. 点击窗口右下角的应用按钮。

详情设置见下图
在这里插入图片描述


  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要调整Qt MainWindow窗口大小,可以使用resize()函数。该函数需要传递两个参数,即新窗口的宽度和高度。例如,以下代码将MainWindow窗口大小设置为500x500像素: ```cpp MainWindow->resize(500, 500); ``` 另外,还可以使用setFixedSize()函数来设置窗口的固定大小。该函数只需要传递一个参数,即窗口大小。例如,以下代码将MainWindow窗口大小设置为400x400像素,并将其锁定为固定大小: ```cpp MainWindow->setFixedSize(400, 400); ``` ### 回答2: Qt是一个C++跨平台的应用程序开发框架,Qt提供的窗口管理器QtMainWindow是窗口应用程序的一种标准组件QtMainWindow可以帮助开发者构建基于窗口的应用程序,同也提供了许多功能,例如菜单栏、工具栏及状态栏等等。在QtMainWindow中,窗口大小调整是常见的操作之一。 QtMainWindow提供了一些方法来处理不同状态下的窗口大小调整,需要根据实际需求选择适合的方法。 首先,我们可以通过设置窗口大小策略来控制窗口大小调整的行为。Qt提供了四个选项:固定大小、自适应大小、最小大小、最大大小。这些选项通过Qt::WindowSizeHints枚举类型定义,我们可以根据实际应用场景选择合适的大小策略,以达到我们期望的窗口大小调整效果。 其次,我们可以重载QMainWindow类中的resizeEvent(QResizeEvent * event)方法来处理与窗口大小调整相关的事件。resizeEvent在窗口大小调整会被触发,我们可以在该方法中进行一些相关的逻辑处理,例如重新布局控件,改变控件大小等操作。 还有一个与窗口大小有关的概念是窗口模态。QtMainWindow可以定义不同的窗口模态,例如模态对话框、非模态对话框等,不同的模态定义会影响窗口大小调整。当一个窗口存在于另一个窗口之上,它被认为是模态的。在Qt中,我们可以通过QWidget::setModal方法来设置窗口的模态状态。 总之,QtMainWindow提供了许多方法来调整窗口大小,开发者需要根据实际应用场景选择合适的方法,以达到期望的用户体验。同在使用过程中需要理解和掌握窗口模态、窗口大小策略等相关概念。 ### 回答3: 在Qt中,Qt MainWindow是一种非常常用的窗口控件,它提供了基础的窗口布局和管理,可以包含其他的控件和小部件。因此,经常需要调整Qt MainWindow的大小以满足用户需要。 首先,我们需要知道Qt MainWindow的一些基本概念。Qt MainWindow是由一个QMenuBar(菜单栏)、一个或多个QToolBar(工具栏)、一个QDockWidget(停靠控件)和一个QStatusBar(状态栏)组成的。除此之外,还可以包含其他的widget。这些widget是通过Qt MainWindow提供的QLayout(布局)来排列的。 QMainWindow提供了一个restoreGeometry函数,它可以用来保存窗口的几何形状(即窗口大小和位置信息)。因此,我们可以通过调用QMainWindow的restoreGeometry函数来实现窗口大小调整。 具体流程如下: 1. 通过`restoreGeometry`函数获取当前窗口状态下的大小信息,并将其保存到一个变量中,以备还原使用。 ``` QByteArray windowGeometry; QByteArray windowState; windowGeometry = saveGeometry(); windowState = saveState(); ``` 2. 调整窗口大小,可以通过修改MainWindow的大小来实现 ``` setGeometry(QRect(0, 0, 640,480)); ``` 3. 如果需要还原大小,可以通过调用`restoreGeometry`函数来实现 ``` restoreGeometry(windowGeometry); restoreState(windowState); ``` 通过上述流程,我们可以非常简单地实现Qt MainWindow的大小调整。值得注意的是,这种方式只是保存了窗口大小信息,因此在窗口中包含其他控件的情况下,可能需要根据实际情况进行调整。如果还需要保持其他控件的位置和大小,可以使用更加复杂的布局管理器来调整窗口大小

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值