• 5897阅读
  • 9回复

setStyleSheet的错误 [复制链接]

上一主题 下一主题
离线tigerssj
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-14
关键词: 界面图像开发
我用的是qt4.4.3的版本,当我通过QApplication设置一个setStyleSheet之后,他就出错,看起来像是内存错误,下面是我的代码:
void loadStyleSheet(const QString &sheetName)
{
    QFile file("Misc\\" + sheetName.toLower() + ".qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QLatin1String(file.readAll());

    qApp->setStyleSheet(styleSheet);
}
loadStyleSheet("coffee").

coffee.qss是在qt的demo中发现的那个,当我设置之后,他报错,

void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)
        {       // try to allocate size bytes
        void *p;
        while ((p = malloc(size)) == 0)
                if (_callnewh(size) == 0)
                {       // report no memory
                static const std::bad_alloc nomem;
                _RAISE(nomem);
                }

        return (p);
        }在这个函数中..到底是啥原因呀?

离线jdwx

只看该作者 1楼 发表于: 2011-11-14
回 楼主(tigerssj) 的帖子
先要确定file到底有没有被open?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线tigerssj

只看该作者 2楼 发表于: 2011-11-14
回 1楼(jdwx) 的帖子
这个肯定的,里面有读取进来东西,我看过...但是为啥就是报错
离线roywillow

只看该作者 3楼 发表于: 2011-11-14
有可能你在QApplication创建之前就调用了这个函数?
另外这个函数是成员函数还是?qApp确定能在这种地方用吗?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线tigerssj

只看该作者 4楼 发表于: 2011-11-14
回 3楼(roywillow) 的帖子
肯定不是在QApplication创建之前调用的,因为我是在点击一个button之后才去调用上面的函数的
离线tigerssj

只看该作者 5楼 发表于: 2011-11-14
我的目的是想做一个类似3ds max那种黑色的背景,白色的字的那种风格,我就需要这样配置整个qt应用程序
离线jdwx

只看该作者 6楼 发表于: 2011-11-14
回 5楼(tigerssj) 的帖子
那就不用读文件的方式,把文件内容以文本的形式放到代码里。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线jorneyr

只看该作者 7楼 发表于: 2011-11-14
/**
* 加载程序的 style sheet
*/
void UiUtil::loadStyleSheet() {
    QFile qss(SettingsUtil::getStyleSheetFileName());
    qss.open(QFile::ReadOnly);
    qApp->setStyleSheet(qss.readAll());
    qss.close();
}

这是我用的函数,什么时候调用都可以
离线tigerssj

只看该作者 8楼 发表于: 2011-11-15
回 7楼(jorneyr) 的帖子
还是不行,用了你的代码,是不是我重载了new和delete的原因呀....好悲剧
离线roywillow

只看该作者 9楼 发表于: 2011-11-15
重载new和delete?什么意思……?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个