我在我的Kubuntu 12.10 linux机器上安装了Qt5和Qt4,并注意到以下内容:
我想要的是非常明确的:我希望我的应用程序适合周围的系统,即始终看起来原生.使用Qt4时,我习惯于默认使用它.Qt5似乎在Windows中也具有正常的原生外观.但是我在Kubuntu中也必须做同样的事情呢?理想情况下,无处不在?我的意思是,我不想强制我的应用程序的linux构建严格使用氧气.我希望它使用当前在KDE中设置的主题:就像它在古老的Qt4中一样.
看起来应用程序代码与此问题无关:我没有使用其中的任何QStyle,它几乎是典型的Qt的hello-world.但以防它是在GitHub上.
UPD: @peppe 给出了为什么会出现这个问题的充分答案(KDE中的Oxygen主题针对Qt4编译而Qt5无法使用).但我仍在寻找如何解决这个问题的答案?我试图找到Oxygen主题源来玩,但除了Firefox主题之外没有找到任何东西.
UPD2: @kwirz 提出了一个有趣的想法:强制应用程序使用GTK +主题,并在KDE设置中启用oxygen-gtk,使GTK窗口看起来类似于Oxygen.一方面,它确实看起来更接近氧气:
但另一方面,我们已经看到了一点点差异:只读线条编辑变为灰色,焦点按钮仍然没有突出显示等等.不幸的是,当尝试将此技术应用于更复杂的小部件时,会出现更多的工件(特别是在组合框上)和旋转器):
因此,似乎这种技术不是一个完整的解决方案,但仍然非常有用的是简单的情况.
我正在尝试为我的客户实现自动报告生成工具.我需要以pdf格式创建报告,我非常适合使用Jquery flot创建图形.我只需要一种方法来获取pdf中的图形.
我尝试使用飞碟(xhtmlrenderer)捕获图形的图像,但它似乎没有帮助我,因为图形是由JavaScript创建的.
xhtmlrenderer可以捕获用javascript创建的元素吗?
或者是他们可以捕获图形图像的任何其他工具?
QString::number(int)
每秒多次打电话.它非常慢:似乎每次都分配一个新的字符串.尝试使用setNum
相同的字符串代替,仍然没有喜悦.原来的长问题:
我有一大堆数字(比如整数),我想将它们格式化为文本,然后(可能不会立即)写入文件.天真的方式看起来像这样大约1:
QString allData;
foreach(const int & value, values) {
allData += QString::number(value);
allData += '\n';
}
Run Code Online (Sandbox Code Playgroud)
我机器上的150000整数需要大约280ms,这对我来说似乎很重要.我想这是因为被调用150000次并且每次都分配新的字符串.当我尝试使用(不分配内存)时,这被证实是问题的根源.QString::number
itoa
[not-cute]
解决方案QString allData;
char buffer[100]; // <-------
foreach(const int & value, values) {
_itoa_s(value, buffer, sizeof(buffer), 10); // <-------
allData += buffer;
allData += '\n';
}
Run Code Online (Sandbox Code Playgroud)
对于相同的150000个整数(大约快4倍),这需要大约70ms,这对我来说是现在可以接受的(我想我也可以使用字符串连接做一些事情,但是让我们把它留在这个问题之外)
但我不喜欢我必须使用一些不标准的,可能已被弃用的,可能是不可移植的2功能(并不是说这看起来很难看).
然后我记得还有一个实例方法:QString::setNum
.我希望我可以使用与以下相同的模式itoa
:只分配一个字符串并每次修改它. …