之前学习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上

 C++ Code 
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;
}

在场景类中调用代码如下:

 C++ Code 
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"));
QSpinBox *pSpinBox = new QSpinBox(pWidgetSpinBox);
pSpinBox->setRange();
pSpinBox->setValue();
addWidget(pWidgetSpinBox);

运行显示如下:

关于QT Graphics View开启OpenGL渲染后复选框、微调框等无法正常显示的问题的更多相关文章

  1. 在qt的QOpenGLWidget开启opengl的抗锯齿

    在QOpenGLWidget的构造函数添加下面几句代码即可 QSurfaceFormat surfaceFormat; surfaceFormat.setSamples();//多重采样 setFor ...

  2. checkbox复选框和div click事件重叠,点击div后复选框也被选中,同时改变div颜色,否则则不选中

     checkbox复选框和div click事件重叠,点击div后复选框也被选中,同时改变div颜色,否则则不选中 <!DOCTYPE html> <html lang=" ...

  3. qt Graphics View Framework(非重点)

    Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转. 说明;Graphics View ...

  4. ExtJS4.2学习(五)表格渲染与复选框

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-10/174.html --------------- ...

  5. Qt Examples - Boxes (在Qt场景视图中结合OpenGL渲染)

    QT自带例程Boxes使用QT Graphics View框架实现了2D图形和3D图形的混合渲染,综合性比较强,整合知识较多,值得学习. 可以使用鼠标通过以下方式控制演示中的元素: 按住鼠标左键的同时 ...

  6. pyqt5 graphics view简单使用

    Graphics View提供了一个平面,用于管理和交互大量自定义的2D图形图元,以及一个用于可视化图元的视图窗口小部件,支持缩放和旋转. 该框架包括一个事件传播架构,允许场景中图元的精确双精度交互功 ...

  7. Qt之QHeaderView添加复选框

    简述 前面分享了QTableView中如何添加复选框.本节主要介绍QTableView中的表头-QHeaderView添加复选框的功能,下面以水平表头为例,垂直表头类似! 简述 效果 QHeaderV ...

  8. Qt之QHeaderView加入复选框

    简述 前面分享了QTableView中怎样加入复选框. 本节主要介绍QTableView中的表头-QHeaderView加入复选框的功能,以下以水平表头为例.垂直表头相似! 简述 效果 QHeader ...

  9. PyQt(Python+Qt)学习随笔:复选框checkBox的tristate属性

    在Qt Designer中,tristate属性是复选框checkBox相比较于QAbstractButton多出来的唯一属性. tristate属性表示复选框是三种状态还是两种状态,如果trista ...

随机推荐

  1. C++程序设计方法3:类中的静态成员

    在类型前面加static修饰的数据成员,是隶属于类的,成为类的静态数据成员,也称为“类的变量” 静态数据成员被该类的所有对象共享(即所有对象中的这个数据域实际上处于同一个内存位置) 静态数据要在实现文 ...

  2. Django——User-Profile

    Profile作用:User内置的字段不够完善,导致创建的用户信息单一,Profile就是为了对User进行扩展,即丰富用户信息 在models中创建Profile类,添加字段user与User形成O ...

  3. unity游戏设计与实现 --读书笔记(一)

    1,  游戏入门的一些知识点,游戏对象GameObject(角色), 组件Compoent(角色的功能),资源Asset(美术素材呵呵音频等的数据),场景Scene(用以放置各个角色,负责展示画面), ...

  4. input的一些使用方法

  5. stdio.h cstdio的区别

    stdio.h  cstdio  string.h  cstring math.h cmath .h是c语言的习惯,在c++中,替换为在前面加个c

  6. Java中的RASP实现

    RSAP RASP是Gartner公司提出的一个概念,称:程序不应该依赖于外部组件进行运行时保护,而应该自身拥有运行时环境保护机制: RASP就是运行时应用自我保护(Runtime applicati ...

  7. 中国地图(Highmaps)

    1.中国地图省份和市 调用的包( <script src="https://img.hcharts.cn/jquery/jquery-1.8.3.min.js">< ...

  8. hdu1171 Big Event in HDU(多重背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=1171 多重背包题目不难,但是有些点不能漏或错. #include<iostream> #includ ...

  9. Android_编程开发规范

     Android编程开发规范         原文地址 http://www.jianshu.com/p/9b8aeca9b281 一.约定 Activity.onCreate(),Fragment. ...

  10. 性能测试相关(TPS/RT/PV等)(转)

    对于我们开发来说,我们日常最熟悉的工作就是把客户的需求实现并交付.但是,事情并不是往往就这样结束了,我们还需要后续对上线的系统进行跟踪调查,查看系统的运行情况.为什么呢?一方面,我们需要关注系统在运行 ...