Articles of qt

本机KDE寻找Qt 5应用程序

我在Kubuntu 12.10 linux机器上安装Qt5和Qt4,注意到以下几点: 使用Qt4编译的程序具有原生的KDE外观和感觉。 我使用默认的KDE的Oxygen主题,我的程序也是这样(请注意平滑的渐变,标题和蓝色select的焦点部件); 但是当用Qt5 进行重新编译而没有对代码做任何改变的时候 ,它使用了不同的风格(看起来就像是Fusion ),看起来很尴尬和不合适(见右图) 我想要的是非常直截了当的:我希望我的应用能够适应周围的系统,也就是始终看起来是本地的。 在使用Qt4时,我习惯于默认使用这个。 Qt5在Windows中似乎也具有正常的本地外观。 但是我还需要做些什么才能在Kubuntu中拥有相同的function呢? 而且, 到处都是理想的? 我的意思是,我不想强​​制我的应用程序的Linux版本严格使用氧气 。 我希望它能够使用当前在KDE中设置的主题:就像在Qt4中一样。 看起来应用程序代码与这个问题无关:我没有使用任何QStyle,这是Qt的“hello-world”。 但是,以防万一它在GitHub上 。 UPD: @peppe 已经给出了相当充分的答案, 为什么会出现这个问题 (KDE中的Oxygen主题是针对Qt4编译的,而Qt5则无法使用)。 但我仍然在寻找如何解决这个问题的答案? 我试图find氧气主题源来玩,但除了Firefox主题没有find任何东西。 UPD2: @kwirz 提出了一个有趣的想法:强制应用程序使用GTK +主题,并在KDE设置中启用氧气gtk ,使GTK窗口看起来类似于氧气。 一方面,它确实看起来更接近于氧气: 但另一方面,我们已经看到了很小的差异:只读行编辑变成灰色,聚焦的button仍然不亮,等等。不幸的是,当试图将这种技术应用到更复杂的小部件时,出现更多的文物(特别是combobox和微调): 所以看起来这个技术不可能是一个完整的解决scheme,但仍然非常有用的是简单的情况。

C ++加载共享库并在Linux平台上运行时提取类实现

在C ++中,是否有可能在执行时加载共享库? 我希望用户select在运行时加载哪个共享库,而不用重新编译整个程序。 dlopen()是C的一个解决scheme,但是我的程序编写的是C ++ / Qt,提取的符号是Qt风格的类,有没有更多的“c ++”方法来做到这一点。

在没有OpenGL的X11的QT上显示图像的最快方法是什么?

我需要在QT小部件中显示原始图像。 我在framebuffer上运行X11,所以OpenGL不可用。 图像和帧缓冲区都是相同的格式–RGB565,但如果需要的话,我可以将其更改为任何其他格式。 我不需要混合或缩放。 我只是需要显示像素。 我使用QPainter :: drawImage,但它将QImage转换为QPixmap,这种转换似乎是非常缓慢的。 也是Xrender的支持,我认为不需要额外的开销来支持Xrender中的混合,而我并不需要它 有没有更好的办法? 如果在QT中不可用,我可以使用Xlib或任何其他库或协议。 我可以修改驱动程序,X服务器或其他任何东西。

Qt的sysroot和prefix选项是一个实际的例子

我正在查看可以为Qt提供的configure脚本运行的所有选项。 (特别是qt-everywhere-opensource-src-5.2.0)。 经过相当多的search,我已经确定这个东西是最好的logging,所以我希望我能得到一些帮助。 当我查看prefix和sysrootconfiguration选项的描述时: 〜/ qt-everywhere-opensource-src-5.2.0 $ ./configure -help | grep“sysroot” -extprefix <dir> …使用-sysroot时,将所有内容安装到<dir> , -sysroot <dir> ……将<dir>设置为目标编译器和qmake的sysroot,并设置pkg-configpath。 -no-gcc-sysroot …..当使用-sysroot时,它会禁止传递–sysroot到编译器 〜/ qt-everywhere-opensource-src-5.2.0 $ ./configure -help | grep“前缀” -prefix <dir> ……这将安装与<dir> -extprefix <dir> …使用-sysroot时,将所有内容安装到<dir> , -hostprefix [dir]开发时需要的工具和库 所以我之前使用了-prefix ,并且完全按照所述进行了操作。 它将所有内容放在提供的<dir> ,然后当我使用<prefix_dir>/bin/qmake构build我的应用程序并将其安装在我的目标平台上时,它希望find<prefix_dir>/lib处的所有共享对象库。 我的印象是,如果我使用-sysroot它会将所有东西安装在<sysroot_dir>然后当我在目标平台上安装我的应用程序时,它将在/libsearch。 至less我希望这是真的。 现在如果我的假设是正确的,那么-extprefix什么-extprefix呢? 他们是否说,如果我可以redirect的地方好事,如果我同时使用-sysroot和-extprefix ? 那么为什么我要使用-no-gcc-sysroot呢? 如果我想我的Qt库安装在“sysroot”为什么我不希望gcc使用/知道相同的sysroot? 如果我能得到一些关于如何正确使用这些选项的实际例子,那么对这些中的一些的解释会很好,甚至更好。

在QT应用程序中embedded一个应用程序(在这种情况下是一个terminal)

我正在写一个QT应用程序,我需要在QDialog中embedded一个terminal(我们说,xterm),就像一些KDE应用程序(参见kdevelop / kate / …)。 我一直在尝试: – QX11EmbedContainer放置在我QDialog的QLayout – QProcess我想要执行的程序 我期望QProcess在QX11EmbedContainer中运行,但它不起作用。 问题是我不能把xterm放到QX11EmbedContainer中,我只能得到一个xterm窗口(不幸的是从我的QDialog中分离出来)。 有人得到同样的问题吗?

在QML中显示FPS

在QML / c ++应用程序中是否有“简单”的方式来显示FPS(帧速率)? 所有animation和视图都是在QML中完成的,应用程序逻辑是在c ++中。 在启动应用程序之前,我已经尝试在Linux中设置QML_SHOW_FRAMERATE ,但是没有帮助: export QML_SHOW_FRAMERATE=1

CMake不知道Qt4 qmake在哪里

我正在使用Debian操作系统,我试图指向cmake,我的Qt4在哪里。 我尝试构buildqjson库和CMakeLists.txt: http ://pastebin.com/fKNp0Qgy 我得到: Qt5 not found, searching for Qt4 qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory CMake Error at /usr/share/cmake-2.8/Modules/FindQt4.cmake:1386 (message): Found unsuitable Qt version "" from NOTFOUND, this code requires Qt 4.x Call Stack (most recent call first): CMakeLists.txt:55 (FIND_PACKAGE) — Configuring incomplete, errors occurred! 我不熟悉CMake和Qtconfiguration,但是我很好奇为什么设置强制CMake FIND_PACKAGE查看qmake的“/ usr / […]

什么是各种Qt平台插件的使用?

我正在为基于ARM的目标(TI AM335x EVM)进行一些Qt5.2应用程序的交叉编译,并且无法在我的平台上显示任何东西。 在做了一些谷歌search之后,我发现如果我用以下方式启动它: ./helloworld -platform eglfs 它会显示(全屏幕,但它的工作)! 我开始考虑所有的平台选项,我发现: android,eglfs,linuxfb,minimalegl,windows,xcb,cocoa,ios,offscreen,qnx,directfp,kms,最小,openwfd 我想知道他们是为了什么。 例如,我假设如果我想在Android设备上运行我的应用程序,则必须传递-platform android ,但它们对我来说并不明显。 是否有任何地方应该使用这些参数的每一个? 例如, eglfs代表什么? 为什么我需要使用那个在linuxfb没有工作? (我会认为linux的帧缓冲是我想要启动我的应用程序,因为它是在embedded式Linux上运行)

如何在Qt中执行复杂的Linux命令?

我想通过使用QProcess在Linux中运行一个命令重新启动计算机。 我在我的应用程序中硬编码了我的root密码。 当我在terminal中运行以下它完美的作品: echo myPass | sudo -S shutdown -r now 当我把命令放在一个shell脚本中并通过QProcess调用它时,它也是成功的: QProcess process; process.startDetached("/bin/sh", QStringList()<< "myScript.sh"); 但是我不能通过直接传递给QProcess来运行它: process.startDetached("echo myPass | sudo -S shutdown -r now "); 它只会打印myPass | sudo -S shutdown -r now myPass | sudo -S shutdown -r now 如何直接使用QProcess来运行这样相对复杂的命令? (不要把一个shell脚本)。

用Qt显示WebCamvideo

我正在Linux Gnome(Ubuntu 9.04)上使用Qt 4.5(2009.03),并希望在我的Qt应用程序的Phonon :: VideoWidget中显示由我的摄像头捕获的video。 我有一个使用v4l2 API的第一个实现,在这里我进行YUV2到RGB的转换,并填充一个我自己的QImage。 它运作良好,但效率不高。 同事使用gStreamer做同样的事情,速度要快得多。 从那时起,我发现了声子,并想使用它。 除了绑定到networking摄像头设备作为源,所有configuration和设置。 我应该创build一个MediaSource对象,但我不知道如何configuration它。 任何帮助将是非常有价值的。 编辑: 声音概述解释说,它尚未支持。 但我需要一个解决scheme。