Tag: qt

发送一系列命令并等待响应

我必须更新连接到串行端口的设备上的固件和设置。 由于这是通过一系列命令完成的,我发送一个命令并等待,直到我收到一个答案。 在answere里面(很多行),我search一个string来表示操作是否成功完成。 Serial->write(“boot”, 1000); Serial->waitForKeyword(“boot successful”); Serial->sendFile(“image.dat”); … 所以我为这个阻塞读/写方法创build了一个新的线程。 在线程内部,我使用了waitForX()函数。 如果我调用watiForKeyword(),它将调用readLines(),直到它检测到关键字或超时 bool waitForKeyword(const QString &keyword) { QString str; // read all lines while(serial->readLines(10000)) { // check each line while((str = serial->getLine()) != "") { // found! if(str.contains(keyword)) return true; } } // timeout return false; } readLines()读取所有可用的内容并将其分隔成行,每行放在一个QStringList中,并得到一个string,我调用getLine(),它返回列表中的第一个string并删除它。 bool SerialPort::readLines(int waitTimeout) { if(!waitForReadyRead(waitTimeout)) { qDebug() […]

如何在Qt,GCD风格的给定线程中执行函数或lambda?

在带GCD的ObjC中,有一种方法可以在任何旋转事件循环的线程中执行lambda。 例如: dispatch_sync(dispatch_get_main_queue(), ^{ /* do sth */ }); 要么: dispatch_async(dispatch_get_main_queue(), ^{ /* do sth */ }); 它在主线程的队列中执行某些操作(相当于C ++中的[]{ /* do sth */ } ),可以是阻塞的,也可以是asynchronous的。 我怎样才能在Qt中做同样的事情? 从我读过的内容来看,我想这个解决scheme会以某种方式向主线程的某个对象发送一个信号。 但是什么对象? 只是QApplication::instance() ? (那是生活在主线程中的唯一对象)。什么信号? 从目前的答案和我目前的研究,我似乎真的需要一些虚拟对象坐在主线程与一些插槽,只是等待一些代码执行。 所以我决定QApplication 。 我目前的代码,这是行不通的(但也许你可以帮助): #include <QApplication> #include <QThread> #include <QMetaMethod> #include <functional> #include <assert.h> class App : public QApplication { Q_OBJECT public: App(); signals: […]

将外部库添加到Qt Creator项目中

如何将外部库添加到由Qt Creator RC1(版本0.9.2)构建的项目中? 例如,win32函数EnumProcesses()需要将Psapi.lib添加到要构建的项目中。

在Docker中运行一个基本的Qt应用程序

我试图在Docker for Windows中运行一个基本的控制台应用程序( 用Qt开发 )。 开发环境是windows 10,编译器VC2015,32位应用程序。 在我尝试移植实际的应用程序之前,这是个好世界,想法是找到问题。 代码是最简单的c ++代码: #include <QCoreApplication> #include <iostream> using namespace std; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); std::cout<<"Hello world"; return a.exec(); } Dockerfile是: # Comment: #It needs a Microsoft environment to run FROM microsoft/nanoserver:latest #Create a folder inside the home folder in the Container Operating System […]