Articles of qt

QT Creator – 跨平台编译

编译Windows,Mac和Linux! 唯一的方法就是在每个操作系统上安装QT Creator并编译自己的版本? (目前在Mac OSX下运行QT Creator)

:CallNamedPipe失败。 错误= 2(Qt)

打开一个新的Qt GUI应用程序项目后,我直接运行这个新项目,而不添加任何代码或更改任何设置,但是我总是收到一条错误消息: [错误]:CallNamedPipe失败。 错误= 2 这是在debugging模式下运行相同项目的屏幕截图: 看来,GUI可以成功运行,但我真的不知道这个错误可能来自哪里。 先谢谢你!

如何获得在Windows上插入USB设备的供应商ID和产品ID

我在Windows平台上使用Qt。 我想获得并显示从我的本地系统插入的USB设备的供应商ID和产品ID。 以下是我的完整源代码从USB设备获取供应商ID和产品ID。 当我运行我的QT应用程序,它不会给我任何错误。 所以我把USB设备插入系统。 但是我的打印语句显示如下结果 qDebug ()<<pDetData->DevicePath; 我得到的结果为0x4 我的源代码中是否有任何实现错误? 如果是这样,请指导我我做错了什么.. 我错过了其他function吗? 是否有可能根据我的源代码从USB设备获得供应商ID和产品ID(我的代码实现)? 请在下面find我的源代码 static GUID GUID_DEVINTERFACE_USB_DEVICE = { 0xA5DCBF10L, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }; HANDLE hInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_USB_DEVICE,NULL,NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if ( hInfo == INVALID_HANDLE_VALUE ) { qDebug ()<<"invalid"; } else { qDebug ()<<"valid handle"; […]

QT – 如何通过HTTP下载和保存图像?

我试图用控制台应用程序下载和保存一些图像。 这是我到目前为止,(所有代码正在编译,但运行后,似乎不进入replyFinished()函数…) void Test::start() { std::cout << "start1"; QNetworkAccessManager *manager = new QNetworkAccessManager(); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); manager->get(QNetworkRequest(QUrl("http://www.exylum.mydevil.net/firefox.jpg"))); } void Test::replyFinished(QNetworkReply* reply) { std::cout << "st"; QImage* img2 = new QImage(); img2->loadFromData(reply->readAll()); if(img2->isNull()) std::cout << "oops"; if(img2->save("omg2.jpg", "JPG")) std::cout << "saved"; else std::cout << "dont…"; }

使用QNetworkAccessManager的post()方法上传文件

我在Qt应用程序中遇到了一些麻烦。 特别是与QNetworkAccessManager类。 我正在尝试使用QNetworkAccessManager的post()方法执行二进制文件的简单HTTP上载。 该文档指出,我可以给QIODevice一个指针post(),并且该类将传输在QIODevice中find的数据。 这表明我应该能够给post()一个指向QFile的指针。 例如: QFile compressedFile("temp"); compressedFile.open(QIODevice::ReadOnly); netManager.post(QNetworkRequest(QUrl("http://mywebsite.com/upload") ), &compressedFile); 我正在开发的Windows系统上似乎发生了什么,我的Qt应用程序从QFile中推送数据,但不完成请求; 它似乎坐在那里等待更多的数据显示从文件。 发布请求不是“closures”,直到我手动杀死应用程序,此时整个文件显示在我的服务器端。 从一些debugging和研究中,我认为这是因为QFile的read()操作在到达文件末尾时不返回-1。 我认为QNetworkAccessManager试图从QIODevice中读取,直到它从read()中得到-1,此时它假定没有更多的数据并closures请求。 如果从read()得到的返回码为零,QNetworkAccessManager假定可能有更多的数据到来,所以它一直在等待这个假设的数据。 我已经用一些testing代码证实了,在你读完文件后,QFile的read()操作只返回0。 这似乎与QNetworkAccessManager的post()方法期望QIODevice行为的方式不兼容。 我的问题是: 这是QFile在Windows下工作的方式的某种限制吗? 有没有其他的方式,我应该使用QFile或QNetworkAccessManager通过post()推送文件? 这是不是会起作用,我将不得不find其他方式来上传我的文件? 任何build议或提示将不胜感激。 更新:事实certificate,我有两个不同的问题:一个在客户端和一个在服务器端。 在客户端,我必须确保我的QFile对象在networking事务期间保持闲置状态。 QNetworkAccessManager的post()方法立即返回,但实际上并没有立即完成。 您需要在QNetworkAccessManager的finished()信号上附加一个插槽,以确定POST何时实际完成。 在我的情况下,QFile几乎是永久的保存起来很容易,但是我也为完成的()信号附加了一个插槽,以便检查来自服务器的错误响应。 我将信号附加到插槽中,如下所示: connect(&netManager, SIGNAL(finished(QNetworkReply*) ), this, SLOT(postFinished(QNetworkReply*) ) ); 当我发送文件的时候,我写了这样的post代码(注意:compressedFile是我的类的成员,所以在代码之后不会超出范围): compressedFile.open(QIODevice::ReadOnly); netManager.post(QNetworkRequest(QUrl(httpDestination.getCString() ) ), &compressedFile); QNetworkAccessManager完成(QNetworkReply *)信号触发我的postFinished(QNetworkReply *)方法。 发生这种情况时,closurescompressedFile并删除co​​mpressedFile表示的数据文件是安全的。 为了进行debugging,我还添加了一些printf()语句来确认事务已经完成: void CL_QtLogCompressor::postFinished(QNetworkReply* reply) { QByteArray response […]

Qt QPSQL驱动程序问题

我试图连接postgresql与Qt SQL模块。 我成功地编译了psql驱动程序(src \ plugins \ sqldrivers \ psql)。 但是当我尝试连接postgresql,我得到这个消息; QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL3 QMYSQL QODBC3 QODBC QPSQL7 QPSQL 我在Windows XP SP3中使用PostgreSQL 8.3,Qt 4.7.1和Visual Studio 2008(我也试过,但是没有帮助)

CreateProcess可以启动一个进程,但QProcess不能…为什么?

我正在写一个Windows QT应用程序,需要启动其他应用程序。 如果我使用下面的窗口调用一切工作正常: QString qsExePath = "C:\\Program Files (x86)\\Some Company\\SomeApp.exe"; QString qsCommandLine = ""; DWORD dwLastError = 0; STARTUPINFO startupInfo; ZeroMemory(&startupInfo, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); startupInfo.dwFlags = STARTF_USESHOWWINDOW; startupInfo.wShowWindow = (WORD)1; PROCESS_INFORMATION processInfo; ZeroMemory(&processInfo, sizeof(processInfo)); if (CreateProcess((TCHAR*)(qsExePath.utf16()), (TCHAR*)(qsCommandLine.utf16()), NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo)) { CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread); } else { dwLastError = GetLastError(); […]

用Qt编程的USB编程

无论如何,我可以在Qt中做USB编程吗? 我正在使用基于Qt 5.0.0的Qt Creator 2.6,它是最新的与Microsoft Visual Studio 2010编译器一起使用的Qt Creator。 我有一个名叫“ Dreamcheeky雷电导弹发射器 ”的玩具,我需要编程这个基于USB的设备。 我曾尝试过LibUSB,但它搞砸了一切。 它甚至重命名设备端口,我不得不使用USBDview软件撤消一切。 但我想我安装不正确。 我遵循这些指示 。 这是64位的指令,但我得到了32位,因为指令似乎没有很大的区别(而不是下载文件)我跟着它。 这是我下载的 – libusb-win32-bin-1.2.6.0.zip 无论你推荐什么API,都不要紧,甚至libusb,但请告诉我如何正确安装它。 我的操作系统是Windows 7的最终32位。

Qt:QPainter + GDI在相同的部件?

我试图使用这里描述的方法在同一个小部件上使用QPainter和GDI调用。 不幸的是,这个教程似乎已经写在Qt的早期版本上,现在它不能工作。 我设置WA_PaintOnScreen标志并重新实现paintEngine()返回NULL。 然后在paintEvent()创build一个QPainter,使用它,然后使用一些GDI调用来绘制位图。 GDI调用工作正常,但QPainter什么都不做。 我在控制台上得到以下错误: QPainter::begin: Paint device returned engine == 0, type: 1 这是不是支持了? 我该怎么做? 我也尝试在GDI绘画小部件的顶部创build一个额外的小部件,但是由于顶部小部件显示为黑色并阻止了GDI小部件,所以效果不佳。

Qt4自定义窗口框架像在办公室2007年?

有没有办法强制Qt4绘制类似于Office 2007/2010的窗口框架? 我希望我的应用程序在所有的Windows版本中看起来都不一样,只是vista / 7。 也许有一些扩展到QMainWindow? 感谢帮助。