我有一个特殊效果要求实现(其实很弱智,也变成特殊效果,汗一下自己):两个QRadioButton切换的时候,让旁边的QListWidget自动变化不同的背景色。想了很多办法:

1. 控件自己刷新,不行

list_widget->update();
list_widget->repaint();
QCoreApplication::processEvents(); // 加上这句也不行

2. 试图使用QListView的dataChanged(),可这是个保护函数,由于QListWidget封装的太好了,看不到它背后的view类实现,不能使用保护函数,因此也不行。

3. 试图构造QModelIndex,然后使用QAbstractItemView的update()函数,成功刷新第一行,而且居然真的只刷新那一行,其余行保持了一个错误的颜色:

QPoint pt(0,0);
QModelIndex t3 = list_widget->indexAt(pt);
list_widget->update(t3);

但是试图每行都刷新,但是无奈始终无法取到每一行的高度,无法取到高度

for (int i=0; i<list_widget->count(); i++) {
QSize si = list_widget->item(i)->sizeHint(); // 这句无效
int len = si.width();
int hi = si.height();
QPoint pt(hi*i, i);
QModelIndex t3 = list_widget->indexAt(pt);
list_widget->update(t3); // view
}

4. 选中的时候,会不会自动刷新?实践证明也不行:

list_widget->setcurrentrow(list_widget->count()-1);

5. 最后想了一个笨办法,只适用于低频率变化,不适于不断刷新:

list_widget->hide(); // 试过了,不调用隐藏,只调用显示是没有用的
list_widget->show();

------------------------------------------------------------------------------------

总结1:QModelIndex很难从外部构造,通常都是内部类实现的时候提供并加以处理。相关的方法大多数也都是内部函数,只有一个update()函数不是,这个函数虽然好用但却又很难构造它的参数,而且这个函数只刷新某一行,剩下的行即使错误也不管。

总结2:虽然很多办法都不行,但是增加item的时候,QListWidget会整体刷新,鼠标移过QListWidget的时候也会整体刷新。

总结3:我记得在学wxPython的时候,解决过这个不间断刷新的问题,回头把代码找出来看看。

QListWidget代码刷新界面的更多相关文章

  1. 重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部

    1.监听按钮点击   2.判断是否是点击的同一个按钮(记录上次点击的按钮)   3.当重复点击相同按钮时,需要获取当前按钮对应控制器刷新界面      3.1 判断是否重复点击按钮,代码写在哪里?   ...

  2. 使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。

    使用DropDownList控件时,改变选项时,获取服务端数据库数据并刷新界面数据. 1. 绑定DropDownList控件SelectedIndexChanged事件. 2. AutoPortBac ...

  3. 使用OC和swift创建系统自带的刷新界面

    使用OC和swift创建系统自带的刷新界面 一:swift刷新界面代码: import UIKit class ViewController: UITableViewController { // 用 ...

  4. ListView中响应item的点击事件并且刷新界面

    ---恢复内容开始--- 最近在在实现listview功能中遇到了这个问题: 点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示: 总结:1.要使用not ...

  5. WPF刷新界面之坎坷路

    WPF刷新界面之坎坷路 项目需要一个硬件检测功能,需要用到界面刷新,刚开始想用个定时器,对检测过的硬设定时添加后刷新界面. 但是很遗憾,定时器并不能进行刷新.后台检测List数据里面已经添加了很多了很 ...

  6. iOS开发之线程组解决请求多个接口数据,完成后,再刷新界面

    1.多任务请求接口,完成后,在刷新数据,常用方法 2018年07月18日 16:34:38 hbblzjy 阅读数:1382 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  7. js刷新界面前事件onbeforeunload

    这个方法的作用是防止填写信息时不小心按了刷新(F5,刷新界面,返回). 目前能实现这个需求的只有这个方法. 具体代码如下: 1.首先在body添加 onbeforeunload 这个事件 <bo ...

  8. EXC_BAD_ACCESS(code=2,address=0xcc 异常解决 及 建议不要在子线程中刷新界面

    iOS 上不建议在非主线程进行UI操作,在非主线程进行UI操作有很大几率会导致程序崩溃,或者出现预期之外的效果. 我开始不知道这一点,在子线程中进行了弹窗操作,结果程序就出问题了! 报的错误是(EXC ...

  9. C#子线程刷新界面并关闭窗体

    目的:要循环刷新界面上的控件,同时不影响用户操作.循环结束后关闭窗体. 步骤:先创建一个窗体,窗体中拖入一个lable控件(label1),一个button控件(button1) 代码窗口输入: // ...

随机推荐

  1. display的小故事

    实在是想不出来到底整个什么题目好..姑且先整这个吧.. 本文不是讲解display这个牛逼css属性的(讲不好才是真的!),主要是分享一下一些小Tips. display:table-cell wid ...

  2. docker & nodejs & mongodb

    Nodejs 应用简单的访问Mongodb 部署至Docker 1.本地简单的写能运行起来的一个nodejs (demo可写的更简单 一个post一个get即可) schemas  user.js v ...

  3. Linux下Tomcat启动正常,但浏览器无法访问

    1.服务器可ping通 2.服务器抓本地的http请求包,可以抓到 3.本地抓服务器返回的http响应包,抓不到 经过查找,是由于开启了Linux防火墙 查看防火墙配置(需要root权限) [root ...

  4. javascript笔记---算法基础学习

  5. 使用百度zrender, demo抛砖引玉.

    http://www.just.org.cn/zrender/index.html https://github.com/ecomfe/zrender 目录结构: |-project    |-dem ...

  6. JS 框架

    <html xmlns=”http://www.w3.org/1999/xhtml”> <head> <title>Untitled Page</title& ...

  7. 我们一起学Windows Phone 8-01-开发环境搭建

    我们仅讨论Windows Phone 8的开发,不考虑兼容向下兼容.也不会提供任何盗版软件的下载.破解. 需要准备 知识:.NET相关开发经验,C#语言开发经验.如果有WPF或Silverlight开 ...

  8. L005-oldboy-mysql-dba-lesson05

    L005-oldboy-mysql-dba-lesson05 在线改表工具:pt-onine-schema-change 来自为知笔记(Wiz)

  9. 一.Nginx的特性和一些知识点

    一.Nginx的特性和一些知识点 1.基本功能服务器      处理静态文件(静态资源的web),支持 反向代理服务器,支持缓存.负载均衡.支持FastCGI      模块化机制,非DOS机制,支持 ...

  10. SQL 存储过程加事务的使用

    create proc USP_CUTTING_TATABLET_PULL_FINISH ( @name NVARCHAR(20) ) as SET XACT_ABORT ON--设置全盘回滚 BEG ...