标签:
我有一个特殊效果要求实现(其实很弱智,也变成特殊效果,汗一下自己):两个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; icount(); i++) {
QSize si = list_widget->item(i)->sizeHint();
int len = si.width();
int hi = si.height();
QPoint pt(hi*i, i);
QModelI