小编NIA*_*NIA的帖子

原生KDE寻找Qt 5应用程序

我在我的Kubuntu 12.10 linux机器上安装了Qt5和Qt4,并注意到以下内容:

  • 使用Qt4编译的程序具有本机KDE外观.我使用默认的KDE的Oxygen主题,我的程序也是如此(注意平滑渐变与标题和蓝色选择的焦点小部件);
  • 但是当使用Qt5重新编译而不对代码进行任何更改时,它会使用不同的样式(似乎它被称为Fusion),它看起来很尴尬和不合适(见右图)

Qt4应用程序的原生外观不是Qt5应用的原生外观

我想要的是非常明确的:我希望我的应用程序适合周围的系统,即始终看起来原生.使用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.一方面,它确实看起来更接近氧气:

使用oxygen-gtk的Qt5 app的半原生外观

但另一方面,我们已经看到了一点点差异:只读线条编辑变为灰色,焦点按钮仍然没有突出显示等等.不幸的是,当尝试将此技术应用于更复杂的小部件时,会出现更多的工件(特别是在组合框上)和旋转器):

使用oxygen-gtk在QComboBox和QTimeEdit上的工件

因此,似乎这种技术不是一个完整的解决方案,但仍然非常有用的是简单的情况.

linux qt kde qt5

20
推荐指数
2
解决办法
7326
查看次数

使用flot graph创建PDF报告

我正在尝试为我的客户实现自动报告生成工具.我需要以pdf格式创建报告,我非常适合使用Jquery flot创建图形.我只需要一种方法来获取pdf中的图形.

我尝试使用飞碟(xhtmlrenderer)捕获图形的图像,但它似乎没有帮助我,因为图形是由JavaScript创建的.

xhtmlrenderer可以捕获用javascript创建的元素吗?

或者是他们可以捕获图形图像的任何其他工具?

javascript pdf jquery flot xhtmlrenderer

9
推荐指数
2
解决办法
9467
查看次数

在Qt中没有分配的情况下将(多个!)数字转换为字符串的正确方法

TL;博士

我想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::numberitoa

可能,但不是Qt [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:只分配一个字符串并每次修改它. …

c++ performance qstring qt itoa

7
推荐指数
1
解决办法
1206
查看次数

标签 统计

qt ×2

c++ ×1

flot ×1

itoa ×1

javascript ×1

jquery ×1

kde ×1

linux ×1

pdf ×1

performance ×1

qstring ×1

qt5 ×1

xhtmlrenderer ×1