本文主要是介绍Qt进程间通信之剪切板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以截图软件为例,同时运行截图软件和另外一个读取所截取图片的软件,说明这两个进程间通信。之前的截图软件已经做好,接下来准备一个读取剪切板的图片。
1.新建一个mainWindow工程,在其UI界面中,拖入一个label。
2.进入mianwindow.h中定义一个全局的定时器和一个全局的QPixmap类型变量,并做一个定时器的信号槽连接,如下:
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);timer=new QTimer;QObject::connect(this->timer,SIGNAL(timeout()),this,SLOT(getpicture()));timer->start(200);
}
定时器定时200ms,即每0.2秒读取一次剪切板的图片。
3.添加槽函数代码,如下:
void MainWindow::getpicture()
{QClipboard *board=QApplication::clipboard();this->pixmap=board->pixmap();ui->label->setPixmap(this->pixmap.scaled(ui->label->size()));
}
定义一个QClipboard类的对象,通过该对象的pixmap返回一个QPixmap结构数据传递给全局的pixmap,即剪切板的图片被读入到程序当初,利用label的setPixmap方法,将其显示在label中。注意,这里没有让定时器stop,即定时器一直执行。
4.更改截屏软件代码。
更改定时器,设置定时器的时长跟读取剪切板的时间一样,即200ms,同时关闭定时器的stop,这样就可以在截取图片的label看到动态图片了。
5.两个工程分别用两个Qt跑,这就是两个进程。
运行截图软件工程
然后运行读取剪切板工程
这就是截屏软件在不停的截取当前屏幕的图片,并且保存到了剪切板,然后另外一个进程不停的从剪切板上读取图片显示出来。
这篇关于Qt进程间通信之剪切板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!