Articles of qt5

本机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,但仍然非常有用的是简单的情况。

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平台插件的使用?

我正在为基于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上运行)

如何静态构buildQt 5

我在Linux环境下使用基于Qt 5.0.1的Qt Creator 2.6.2。 该应用程序在我编译的计算机上工作正常,但是当我在另一台计算机上执行它时,出现如下错误: error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory error while loading shared libraries: libxslt.so.1: cannot open shared object file: No such file or directory 我在这个链接find了一些解决scheme(一些链接已经死了)。 所以我添加到我的.pro文件这一行: CONFIG += static 要静态编译我的项目。 我以为我会得到的文件会更大,但我得到相同的大小和相同的错误。 谢谢。

在构build时部署所有Qt依赖项

我创build了一个CMakeLists.txt来创build一个简单的Qt应用程序(实际上它只有一个文件main.cpp显示一个空的主窗口): cmake_minimum_required (VERSION 3.7.0) project(guitest) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) find_package(Qt5Widgets REQUIRED) include_directories (${CMAKE_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}) file (GLOB_RECURSE WSIMGUI_SRC *.cpp) add_executable(${PROJECT_NAME} ${WSIMGUI_SRC}) target_link_libraries(${PROJECT_NAME} Qt5::Widgets) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Widgets> $<TARGET_FILE_DIR:${PROJECT_NAME}>) 项目构build和add_custom_command将Qt5Widgets.dll文件复制到输出目录。 但是当我尝试运行该程序时,出现以下错误: 此应用程序无法启动,因为它无法find或加载“”中的Qt平台插件“窗口”。 我一直在寻找这个问题,我注意到我也必须从我的Qt安装中复制platform文件夹。 我怎样才能在我的CMakeLists.txt文件中做到这一点?

Gstreamer:gst_element_factory_make():总是失败并返回NULL:Qt5

我的问题是,我无法创buildGstreamer元素。 我正在使用Qt 5.2.1创buildGstreamer项目 我在做什么 : gst_init( NULL, NULL ); GstElement *m_pipeline = gst_pipeline_new ("pipeline1"); GstElement *m_rtspSrc = gst_element_factory_make("rtspsrc", "MyRtspSrc"); 但是gst_element_factory_make总是返回NULL 。 我已经validation: 检查共享对象是否位于$(libdir)/gstreamer-0.10/中。 (在那里)。 gst-inspect-0.10 rtspsrc 。 (它给出了插件的细节)。 gst-launch-0.10 fakesrc! my_all_plugin! fakesink(它的工作很好)。 我也尝试了另一种select: GstElementFactory *factory = gst_element_factory_find ("rtspsrc"); if(factory) GstElement *m_rtspSrc = gst_element_factory_create (factory, "MyRtspSrc"); 但是, gst_element_factory_find无法findrtspsrc 。 请帮我解决这个问题。 我也谷歌它。 但找不到任何解决办法。 我也提到了一些StackOverflow文章。 像GStreamer gst_element_factory_make失败等等,但仍然有问题。 提前很多很多谢谢。

在没有硬件加速的情况下在Windows上部署Qt5

Qt5可以通过使用ANGLE来使用OpenGL驱动程序或DirectX驱动程序。 由于我们不能依赖已安装的OpenGL驱动程序,因此我们需要使用ANGLE后端。 不幸的是,这并不能解决所有的部署问题,特别是在没有硬件加速的Windows虚拟机上。 在这些系统上,我们收到一条错误消息,说OpenGL上下文创build失败。 屏幕截图:无法为格式QSurfaceFormat创buildOpenGL上下文 我们正在部署所有必需的库(libEGL.dll libGLESv2.dll libeay32.dll msvcp110.dll msvcr110.dll d3dcompiler_46.dll),但我们仍然收到此错误消息。 你如何部署一个QML应用程序,需要在没有OpenGL驱动的最终用户计算机上运行,​​以及在没有Direct3D加速的虚拟机上运行? 在Qt wiki上有一个提到这个问题的页面,但是这对解决这个问题并没有什么帮助。 Qt 5.4.0更新: 我迄今为止的发现是: 设置QT_ANGLE_PLATFORM = warp – >创build一个没有内容的窗口。 按预期设置QT_ANGLE_PLATFORM = d3d9 – >同样的错误对话框。 按预期设置QT_ANGLE_PLATFORM = d3d11 – >同样的错误对话框。 设置QT_OPENGL = desktop =>与QT_ANGLE_PLATFORM = warp相同。 如预期的那样设置QT_OPENGL = angle – >相同的错误对话框。 设置QT_OPENGL = software + opengl32sw.dll(mesa for windows) – >不可预知:可能运行,可能会崩溃,可能会显示错误对话框。 Qt Quick 2D渲染器的更新 […]

如何在没有安装Qt的情况下运行Qt程序?

我已经用Qt5.3.1编写了一个程序,并在我的开发机器上运行,它工作正常。 我将所有必需的.dll文件复制到我的.exe所在的文件夹中。 这些是: Qt5Widgets.dll Qt5Network.dll Qt5Gui.dll Qt5Core.dll icudt51.dll icuin51.dll icuuc51.dll libgcc_s_dw2-1.dll libwinpthread-1.DLL 的libstdc ++ – 6.dll 现在我想在没有安装Qt的机器上运行该程序。 我怎么做? 用户不需要为了使用程序而安装IDE,对吧? 开发机器的细节在哪里工作: Windows 8 Qt 5.3.1 部署平台是: Windows Vista 没有安装Qt,但所有必需的.dll都已安装 我得到的错误是第一: 此应用程序无法启动,因为它无法find或加载Qt平台插件“窗口”。 重新安装应用程序可能会解决此问题。 下一个错误信息是: 此应用程序请求运行时以不寻常的方式终止。 请联系支持。 然后程序崩溃。 但是,如果我安装Qt5.3.1它的作品。 所以它与c:/Qt目录中的文件有关

在为QT编译opencv时出错

我想在QT使用opencv ,所以我必须用mingw编译它。 当我想用CMake 2.8.10.2进行编译时,它有以下错误 The CXX compiler identification is GNU 4.7.2 The C compiler identification is GNU 4.7.2 Check for working CXX compiler: C:/Qt/Qt5.0.1/Tools/MinGW/bin/g++.exe Check for working CXX compiler: C:/Qt/Qt5.0.1/Tools/MinGW/bin/g++.exe — broken CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake:54 (message): The C++ compiler "C:/Qt/Qt5.0.1/Tools/MinGW/bin/g++.exe" is not able to compile a simple test program. It fails […]

QWinTaskbarProgress将不会显示

我使用Windows7和Qt5.3.0我下面添加到我的MainWindow的构造函数,但没有任何显示在我的任务栏上。 我错过了什么? QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this); pTaskbarProgress->setMinimum(0); pTaskbarProgress->setMaximum(100); pTaskbarProgress->setValue(50); pTaskbarProgress->show();