• 5285阅读
  • 6回复

[提问]4.8.0中的QListWidget是不是被改出bug来了啊? [复制链接]

上一主题 下一主题
离线shiziyang
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-29
我创建了一个QListWidget,然后加了n项,每项都塞了一个窗体,比如label ,并且出现了垂直滚动条,结果发现如果我一旦设置了该控件qss的background属性,拉动滚动条后只有选中项的背景跟着移动,所有的控件都不会动。该list的代码如下:
    m_plstTest = new QListWidget(this);
    for(int i = 0; i < 30; i++)
    {
        QString strText = QString("%1%2").arg(i).arg(i+i);
        QListWidgetItem * pItem = new QListWidgetItem;
        pItem->setSizeHint(QSize(50, 50));
        m_plstTest->addItem(pItem);
        m_plstTest->setItemWidget(pItem, new QLabel(strText, this));
    }
我在4.7.0上同样的代码没有问题求教有什么方法可以回避或修正该问题。
离线dbzhang800

只看该作者 1楼 发表于: 2012-03-29
如果你确定如此,那么先将你的测试程序在保持完整(别人可以直接编译运行)的情况下,精简到最小(一般不超过100行)

然后可以发到论坛上,或者直接去提交bug
离线shiziyang

只看该作者 2楼 发表于: 2012-03-29
回 1楼(dbzhang800) 的帖子
这样子吗?

#include <QtGui>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

    QListWidget list;
    for(int i = 0; i < 30; i++)
    {
        QString strText = QString("%1%2").arg(i).arg(i+i);
        QListWidgetItem * pItem = new QListWidgetItem;
        pItem->setSizeHint(QSize(50, 50));
        list.addItem(pItem);
        list.setItemWidget(pItem, new QLabel(strText));
    }
    list.setStyleSheet("QListWidget{background-color:#7F7F7F}");
    list.show();
    
    return a.exec();
}
离线dbzhang800

只看该作者 3楼 发表于: 2012-03-30
恩,就是这种风格。不过里面那三行QTextCodec没什么用,你可以直接去掉。

离线dbzhang800

只看该作者 4楼 发表于: 2012-03-30
试了一下,在

Windows7+MSVC2010 + Qt4.8.0 /Qt5.0 环境下

均没发现你提到的问题。
离线shiziyang

只看该作者 5楼 发表于: 2012-03-31
我是在Mac下开发的。
话说现在最新不是4.8.1吗,有5.0了吗?
离线roywillow

只看该作者 6楼 发表于: 2012-03-31
回 5楼(shiziyang) 的帖子
有5.0的测试版了吧,不过几乎是另外一套机制了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个