关于QT Graphics View开启OpenGL渲染后复选框、微调框等无法正常显示的问题
之前学习QT Graphics View框架,除了基本的图元外,还可以通过QGraphicsProxyWidget类添加QT的基本Widget(如按钮、复选框、单选框等),常使用的场景类接口如下:
QGraphicsProxyWidget *QGraphicsScene::addWidget(QWidget *widget, Qt::WindowFlags wFlags = ...)
为窗口小部件创建一个新的QGraphicsProxyWidget,将其添加到场景中,并返回指向代理的指针。
由于需要3D应用,我在Graphics View上开启了OpenGL渲染:
QGraphicsView view(&scene);
view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
此时,场景中显示的按钮、复选框、单选框、微调框等显示就异常了~

上图显示:按钮没有按钮轮廓,复选框和单选框不显示勾选框,微调框则不显示上下控制箭头,只有在鼠标移入widget时才会显示,感觉由于OpenGL渲染的缘故,将这些widget刷坏了~
我暂时还没有从OpenGL的角度去解释该问题(不知哪位大牛能给解决下,不胜感激!),但是程序中需要OpenGL渲染,又不能关闭它而顾此失彼。
我想的一个障眼法的方法是:将widget设置在一个QDialog上
|
1
2 3 4 5 6 7 |
QDialog *GraphicsScene::createDialogEx(const QString &windowTitle) const
{ QDialog *dialog = , Qt::CustomizeWindowHint | Qt::WindowTitleHint); dialog->setWindowOpacity(); dialog->setWindowTitle(windowTitle); return dialog; } |
在场景类中调用代码如下:
|
1
2 3 4 5 6 7 8 9 |
QWidget *pWidgetCheckBox = createDialogEx(tr("CheckBox"));
QCheckBox *pCheck = new QCheckBox("QCheckBox", pWidgetCheckBox); addWidget(pWidgetCheckBox); QWidget *pWidgetSpinBox = createDialogEx(tr("SpinBox")); |
运行显示如下:

关于QT Graphics View开启OpenGL渲染后复选框、微调框等无法正常显示的问题的更多相关文章
- 在qt的QOpenGLWidget开启opengl的抗锯齿
在QOpenGLWidget的构造函数添加下面几句代码即可 QSurfaceFormat surfaceFormat; surfaceFormat.setSamples();//多重采样 setFor ...
- checkbox复选框和div click事件重叠,点击div后复选框也被选中,同时改变div颜色,否则则不选中
checkbox复选框和div click事件重叠,点击div后复选框也被选中,同时改变div颜色,否则则不选中 <!DOCTYPE html> <html lang=" ...
- qt Graphics View Framework(非重点)
Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转. 说明;Graphics View ...
- ExtJS4.2学习(五)表格渲染与复选框
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-10/174.html --------------- ...
- Qt Examples - Boxes (在Qt场景视图中结合OpenGL渲染)
QT自带例程Boxes使用QT Graphics View框架实现了2D图形和3D图形的混合渲染,综合性比较强,整合知识较多,值得学习. 可以使用鼠标通过以下方式控制演示中的元素: 按住鼠标左键的同时 ...
- pyqt5 graphics view简单使用
Graphics View提供了一个平面,用于管理和交互大量自定义的2D图形图元,以及一个用于可视化图元的视图窗口小部件,支持缩放和旋转. 该框架包括一个事件传播架构,允许场景中图元的精确双精度交互功 ...
- Qt之QHeaderView添加复选框
简述 前面分享了QTableView中如何添加复选框.本节主要介绍QTableView中的表头-QHeaderView添加复选框的功能,下面以水平表头为例,垂直表头类似! 简述 效果 QHeaderV ...
- Qt之QHeaderView加入复选框
简述 前面分享了QTableView中怎样加入复选框. 本节主要介绍QTableView中的表头-QHeaderView加入复选框的功能,以下以水平表头为例.垂直表头相似! 简述 效果 QHeader ...
- PyQt(Python+Qt)学习随笔:复选框checkBox的tristate属性
在Qt Designer中,tristate属性是复选框checkBox相比较于QAbstractButton多出来的唯一属性. tristate属性表示复选框是三种状态还是两种状态,如果trista ...
随机推荐
- AsyncLocal<T>与ThreadLocal<T>区别研究
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Django——信号
django——signal 其实可以理解为django内部的钩子,当某一个事件发生时,其它程序会触发并对其作出相关反应,通过signal回调处理函数(receivers),从而更大程度的解耦我们的项 ...
- 编程菜鸟的日记-初学尝试编程-编写函数实现strcmp功能
#include <iostream>using namespace std;int mystrcmp(const char *str1,const char *str2){ assert ...
- quepy
A python framework to transform natural language questions to queries in a database query language. ...
- keras 的svm做分类
SVC继承了父类BaseSVC SVC类主要方法: ★__init__() 主要参数: C: float参数 默认值为1.0 错误项的惩罚系数.C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确 ...
- django中数据库操作有关部分
# >>>>>>>>>>>>>>>>>>>>>>>>&g ...
- postgresql中使用distinct去重
select语法 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ...
- 转:基于Jmeter的MQTT测试插件
基于Jmeter的MQTT测试插件-上 1. Jmeter插件简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.下载 用于对软件做压力测试,它最初被设计用于Web应用 ...
- K-means算法原理
聚类的基本思想 俗话说"物以类聚,人以群分" 聚类(Clustering)是一种无监督学习(unsupervised learning),简单地说就是把相似的对象归到同一簇中.簇内 ...
- PHP操作二进制字节数据
在PHP开发中大都是操作字符类数据,极为方便,但操作二进制又如何呢,下面代码举例看看. 函数: pack(format,args+) pack()和unpack()函数的第一个参数表如下 Bash ...