之前学习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. shell脚本使用技巧4--读取字符,重复执行

    ls | cat -n > out.txt 给输出的信息加行号并导出到out.txt 利用shell生成一个独立的进程 pwd; (cd /bin; ls); pwd; 开启一个子shell,不 ...

  2. Java 构造器 考虑用静态构造方法代替构造器

    类可以提供一个公有的静态工厂方法,它是一个返回类的实例的静态方法.静态工厂方法与设计模式中的工厂方法模式不同. 优势: 静态工厂方法与构造器不同的第一大优势在于,它们有名称.一个类只能有一个带有指定签 ...

  3. html标题-段落-字符实体-换行

    Html标题标签: <h1>.<h2>.<h3>.<h4>.<h5>.<h6>标签可以在网页上定义6种级别的标题,这6种级别的标 ...

  4. Linux之安装python

    # yum install zlib-devel -y # tar -xf Python-3.6.0 cd Python-3.6.0 # ./configure --prefix=/usr/local ...

  5. Android Studio 安装与设置

    http://www.cnblogs.com/abao0/p/6934127.html

  6. .Net转Java.04.踩到switch的坑

    今天线上有个NullPointerException 的异常,我翻了一下代码,抛异常的竟然是switch语句 我有种不祥的预感,本地做了实验 结果是 Java的switch如果传入null值,会抛出  ...

  7. ELK架构设计

    1.架构一 2.架构二 3.架构三 4.架构四 示例1: 示例二: ELKB简述 E:Elasticsearch 是一个基于Lucene的分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.支持 ...

  8. PHP性能分析——xhprof(window 安装xhporf)

    1 下载xhprof的php扩展 因为官方的xhprof不支持php7,所以采用tideways版本的xhprof 下载地址:windows版tideways_xhprof 将windows版的dll ...

  9. ZABBIX 4.0 LTS 部署

    1. 环境说明 关于zabbix的详细使用可以参考之前的3.0 版本,该文档仅记录zabbix 4.0 编译安装过程!ZABBIX 3.0 从入门到精通(zabbix使用详解) : https://w ...

  10. org.springframework.web.method.HandlerMethod 与 org.springframework.messaging.handler.HandlerMethod 转换失败

    Springmvc hander.getclassclass org.springframework.web.method.HandlerMethod HandlerMethod.classclass ...