Qt的样式表性能
我想知道是否有可能比在Qt应用程序中使用我的方法更快地加载样式表 这是我的密码:Qt的样式表性能,qt,stylesheet,execution-time,qtstylesheets,Qt,Stylesheet,Execution Time,Qtstylesheets,我想知道是否有可能比在Qt应用程序中使用我的方法更快地加载样式表 这是我的密码: this->setStyleSheet("background-color : black;"); 执行这个简单的css/qss样式需要270毫秒 使用此导入方法进行更大的qss样式设置 QFile file("style.qss"); if(!file.open(QFile::ReadOnly)){ qDebug() << "Style QSS file not found";
this->setStyleSheet("background-color : black;");
执行这个简单的css/qss样式需要270毫秒
使用此导入方法进行更大的qss样式设置
QFile file("style.qss");
if(!file.open(QFile::ReadOnly)){
qDebug() << "Style QSS file not found";
}
css = QString::fromLatin1(file.readAll());
file.close();
耗时330毫秒,所以考虑到执行的css样式块的差异,这并不是那么糟糕
所以看起来setStyleShet命令的init非常长。
我的问题是:有没有一种方法可以加速这个命令(不使用Qstring、其他导入方法等)或线程化
对我来说,这是一个巨大的挑战,因为我需要经常更新我的样式表,而且它所花费的时间和我执行所有逻辑所花费的时间一样多
谢谢。
祝您度过愉快的一天:)在Linux中,使用样式表可能会严重影响性能。以下是一些信息: 您可以尝试将图形渲染引擎切换到光栅。你可以用几种不同的方法来做。最简单的测试方法是在运行应用程序时通过命令行参数进行设置: yourApp-图形系统光栅 要在代码中执行此操作,请使用以下API:
虽然我在QT中经常使用CSS,但我仍然担心扩展CSS在QT中是否正确 我强烈建议尽量限制CSS的使用,或者至少在设计它们时要仔细考虑 特别是对于具有大量控件和复杂布局的复杂应用程序,如果您针对跨平台环境,则在使用它们时应非常小心。如果您需要很好地“绘制”一个只针对Win32或MacOSX的应用程序(例如,但在其他平台上运行相同的CSS可能会导致比使用本机控件更难看的UI),那么这确实是一个非常快速的方法 然后你开始在“每个像素都很重要”的界面上工作,你会发现即使是Qt中的基本布局也有错误,并且添加到顶部CSS引擎中,这也充满了“小”错误,可能会导致更不可预测的结果和开发时间 关于您的问题-在应用程序级别设置全局CSS是最快的方法,但请记住,它将在所有应用程序小部件中继承,因此,如果您需要不同的内容,您必须创建特殊规则。找到此方法:
this->style()->unpolish(this); //"this" is my main window
this->style()->polish(this);
this->update();
而不是:
this->setStyleSheet(css);
速度快得难以置信!(0-1毫秒vs 150-200毫秒)
解决方案就在那里:我尝试了抛光和未抛光的方法,但没有奏效。最后,我尝试了
qApp->setStyleSheet(“style..”)代码>如果是一个小项目,它就成功了。
您可以使用动态样式表作为tonvandenheuvelanswered进行引用,并替换按钮->设置样式(QApplication::style())代码>通过小部件
->设置样式(小部件->样式())
希望它能有所帮助:)制作一个动态样式表可能就是你想要的。这是真的,但这与你问的问题无关,因为要使polish()/unpolish()有效,你需要在之前应用CSS。。这只适用于动态属性。。但这是真的,这是可能的解决方案之一……我已经在init中加载了CSS的动态属性,但我的问题是每次都必须使用旧方法重新应用样式表。对不起,我的问题不够清楚。这就是为什么我试图找到一种更快的方式来导入样式表。
this->setStyleSheet(css);