Articles of qt

相对文件path的差异:Qt Creator的debugging模式和释放模式

QFile file("test.txt"); if (file.open(QIODevice::ReadOnly)) { qDebug()<<"You got me."; } 我在用: Qt 4.8.6与MSVC 2010 Qt Creator 3.1.1 Windows 7(32位) 从上面的代码, 如果.pro文件没有被改变 ,相应的build目录 对于debugging模式 : D:\…\build-Main-MSVC2010-Debug 并且debugging模式的.exe将位于 D:\…\build-Main-MSVC2010-Debug\debug 对于发布模式 : D:\…\build-Main-MSVC2010-Release 并且释放模式的.exe将位于 D:\…\build-Main-MSVC2010-Release\release [题] 如果我想让发布程序读取“test.txt”文件,我把文件放在文件夹中 D:\…\build-Main-MSVC2010-Release\release 这是有道理的。 但是,如果我想让debugging程序读取“test.txt”文件,我必须把文件放在文件夹中 D:\…\build-Main-MSVC2010-Debug\ 而不是 D:\…\build-Main-MSVC2010-Debug\debug 我想知道为什么相对的文件path在debugging和发布模式下工作不同,它一直困扰我很长一段时间。 [编辑] 感谢@Paul和@lpapp。 以下是工作目录的截图: debugging: 发布: [非常重要的编辑] 对于@Paul和@lpapp: 我以前需要将.dll复制到release文件夹才能testing运行时间,而我只是发现如果我通过Qt Creator执行发布程序 ,那么工作目录就像你所说的那样工作。 但是,如果我直接点击发布文件夹中的.exe,情况将如我在问题中所说的那样。 我认为从Qt Creator运行程序和直接执行程序可能会有所不同。

qDebug()在Windows上不支持unicodestring

我有一个包含Unicode字符的文件名的行编辑,它在GUI中正确显示,但是当我用qDebug()打印时,它将Unicode符号显示为问号。 例如,对于"C:/Test/абв"此代码将只显示"C:/Test/???" 。 这一行: qDebug() << ui->lineEditFileName->text(); 会显示: 这个问题只发生在Windows(XP和7),在Linux上它工作正常。 Qt的版本是4.8.0。

如何在QT中从mainwindow显示另一个窗口

平台:QT,Windows XP 我是Qt新手。 我想从mainwindow显示另一个窗口(做什么来打开它作为对话框)。 我做了“ add New Item ->Qt Designer Form Class ”,名为MyWindow 。 但是如何从mainwindow显示这个MyWindow ?

如何为非Qt应用程序创build一个Qt共享库

我开发了一个具有Qt共享库和Qt应用程序的应用程序。 Qt共享库会导出一个只有less量信号的类。 我已经使用了Q_DECL_EXPORT / Q_DECL_IMPORTmacros。 现在,dll和应用程序之间的通信是通过Qt信号和插槽来实现的,需要使用QObject来开发应用程序。 现在我被要求将Qt共享库作为理想的DLL,其中客户端应用程序不依赖于Qt框架。 我看到以下文章,但在非Qt应用程序中使用基于Qt的DLL,但不知道这是否是最好的方法。 可能有人请赐教,我可能select开发Qt共享库以用于非Qt应用程序。

C ++如何使两个程序进行通信?

问题: 使两个程序(都在同一台计算机上运行)进行通信和交互的最佳方式是什么? (Windows,C ++) 理论情况: 在Windows PC上,我有一个第三方软件 ,你用来做东西(如打开/编辑/保存文件…这不是很重要)。 这第三方软件有一个可用的C ++ SDK,所以你可以开发它的插件。 我开发了一个独立的 Windows C ++程序(最有可能使用Qt)与GUI。 该程序与第三方软件在同一台Windows电脑上运行。 这个程序将作为一个遥控器或发件人。 使用第三方软件的SDK,我为第三方软件开发了一个小插件 。 这个程序作为一个接收器,所以我的Qt GUI可以发送这个插件将收到的命令,从而相应地远程控制第三方软件 。 所以对于一个基本的例子,我可以按下我的独立GUI上的一个button,该button将与插件通信,然后在第三方软件中打开指定的文件。 我最基本的要求就是开发一个独立的软件,可以与我为第三方软件开发的插件进行交stream。 什么是最好的办法呢? 我真的不知道从哪里开始,或者看什么。 有没有常见的C ++库,使这种types的事情容易? 我对C ++比较陌生,对Qt也很新,所以请尽量详细说明。 请不要只说“使用共享内存”或类似的东西,因为我不会确切地知道你在说什么。 该程序不会在一台单独的计算机上运行,​​所以在这里我不认为networking的东西是必要的。 我正在考虑的一些问题: 如果用户同时打开多个第三方软件副本,该怎么办? 我的独立软件如何知道哪一个与之通信? 如果我已经有我的独立软件运行并打开第三方软件,插件是否需要注册或find我的独立软件进行通信? 如果我已经有第三方软件运行,然后打开我的独立软件,它必须扫描插件,看看它的运行或如何find它? 任何帮助将不胜感激。 我已经做了关于这个话题的search,但没有看到许多C ++的具体问题,其中大多数没有太多的答案,或不是很清楚,或没有专门提到与插件的软件通信第三方程序。

在Windows上混合使用Qt和Objective-C

我通常在OSX和iOS上开发应用程序。 我发现Objective-C对许多任务来说是非常有用的,而且在很多情况下可以加快工作速度。 我想在Windows系统上移植我的应用程序。 我意识到(如果你有任何其他解决scheme,请让我知道!)Qt可能是一个非常有用的工具! 用Qt创buildGUI简单而快速。 问题是Qt与C ++一起工作,而OSX与Objective-C协同工作。 我读过Qt可以处理Objective-C的源代码,实际上你可以findOBJECTIVE_SOURCES和OBJECTIVE_HEADERS makefilevariables。 我search了如何configurationQt Creator来接受.mm文件,但我无法使其工作。 .pro文件里面有如下内容: … OBJECTIVE_SOURCES += \ test.mm INCLUDEPATH += "C:\GNUStep\…\Headers" LIBS += -L"C:\GNUStep\…\Libraries" -lobjc -lgnustep-base QMAKE_CXXFLAGS += -fconstant-string-class=NSConstantString -std=c99 … 我非常简单的项目是一个小部件( .h和.cpp ), main.cpp和test.h以及test.mm 为了混合C ++和Objective-C,我想到了一个“桥梁”(就像我在Cocoa中混合Objective-C和C ++时那样),所以我创build了test.h作为一个简单的头文件(没有Objective-C,只有一个桥): // test.h void testFunction( void ); 比: // test.mm #import <Foundation/Foundation.h> void testFunction( void ) { NSString* string; […]

Windows允许同时写入文件吗?

我创build了一个使用Qt写入文件的c ++程序。 这个程序很可能有多个实例,每个实例都通过本地networking访问文件。 我正在使用QFile::ReadWrite作为我的文件打开选项。 如果一个进程在这个模式下打开文件,我发现另一个进程也可以打开它进行写入。 我使用file.write(text)写入文件。 如果两个stream程都试图在同一时间做到这一点,会发生什么? Windows处理这个? 我想知道是否重新实现使用窗口的CreateFile(…)和使用0的sharemode是必需的? 谢谢。

在DirectX中使用Qt?

我的select到底是什么? 我有我需要在OpenGL和DirectX中编写的 程序 ,我想使用Qt for OpenGL,而不必为我的任务的DirectX组件重新实现一半的程序。 我已经看过谷歌,我发现人们抱怨Direct3D是Qt的依赖,人们讨论如何实现QD3DWidget子类QWidget类似的方式QGLWidget,但没有人谈到如何实现它或任何地方例子是。 我需要帮助。 我想知道是否有可能? 我需要做些什么才能使它工作? 之前已经完成了吗?

如何为Qt独立应用程序创build清单文件

我正在按照本指南构build一个带有静态链接的Qt独立应用程序。 除了最后一步之外,我还执行了其他步骤,其中包括将清单embedded到可执行文件中,并且应用程序可以在许多机器上正常运行。 但是,我发现其中一个可执行文件无法启动,因为MSVCP140.dll从计算机中丢失。 这是错误很可能是由于我没有包括清单的事实。 事实上,在上面的指南中明确写道: 你应该执行mt.exe来在应用程序中embedded一个清单,以避免错误,例如当应用程序在其他计算机上启动时丢失MSVCP90.dll 我的两个问题是: 清单文件在这种情况下的function是什么? 为什么在某些机器上,应用程序运行时没有它,而对于其他应用程序呢? 据我所知,Visual Studio安装在用于testing的计算机上。 如何为我的Qt应用程序生成这样的文件? 我遵循指南的步骤,没有.manifest文件是自动生成的。 因此,我假设在构buildQt的静态版本时我错过了某些东西,或者我应该使用一些外部工具来完成这个工作。 例如,我看到Mage.exe可以用来生成清单,但我不知道是否正确的方法去我的情况。

在QTabWidget上放一个closuresbutton

我正在使用QTabWidget在窗口中呈现多个文档,并且我想在每个选项卡上绘制一个closuresbutton。 我使用的是Vista和Qt4 ,所以Tab小部件是一个本地的Windows控件; 这可能会影响可行性。 有谁知道是否有可能使用QTabWidget控件做到这一点,还是我必须创build一个自定义小部件? 如果创build一个新的widget是唯一的select,任何指针将不胜感激; 我对Qt比较陌生。