<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      QProcess允許將一個進程視為順序IO設備

      #include<QProcess>

      private:

          QProcess myprocess;

       

      void MainWindow::on_pushButton_clicked()

      {

        myprocess.start("notepad.exe");   // 啟動進程

      }

       

      2  進程間通信 IPC(Inter-Process Communication):

        1)TCP/IP

        2)   共享內存:

          QSharedMemory 跨平臺的共享內存類,提供了訪問操作系統共享內存的實現,允許多個線程和進程安全訪問共享內存段。

          QSystemSemaphore可用于控制系統的共享資源的訪問及進程間訪問

        3) D-BUS

          允許從一個進程發射信號關聯到另一個進程的槽上

        4) Qt通信協議(QCOP):linux應用

          QCopChannel類實現了在客戶端程序間使用有名管道來進行消息傳輸的協議

       

       

      QSharedMemory sharedMemory;

      // 設置key,系統用它作為底層共享內存段的標識
      sharedMemory.setKey("QSharedMemoryExample");

       1 #include "dialog.h"
       2 #include "ui_dialog.h"
       3 
       4 #include <QFileDialog>
       5 #include <QBuffer>
       6 #include <QDebug>
       7 
       8 Dialog::Dialog(QWidget *parent) :
       9     QDialog(parent),
      10     ui(new Ui::Dialog)
      11 {
      12     ui->setupUi(this);
      13     // 設置key,系統用它作為底層共享內存段的標識
      14     sharedMemory.setKey("QSharedMemoryExample");
      15 }
      16 
      17 Dialog::~Dialog()
      18 {
      19     delete ui;
      20 }
      21 
      22 void Dialog::loadFromFile()
      23 {
      24     if (sharedMemory.isAttached())   //判斷該進程是否已經連接到共享內存段
      25         detach();                    //如果是,那么調用detach()先將該進程與共享內存段進行分離 
      26 
      27     ui->label->setText(tr("選擇一個圖片文件!"));
      28     QString fileName = QFileDialog::getOpenFileName(0, QString(), QString(),        
      29                                                     tr("Images (*.png *.jpg)"));            
      30     QImage image;
      31     if (!image.load(fileName)) {
      32         ui->label->setText(tr("選擇的文件不是圖片,請選擇圖片文件!"));
      33         return;
      34     }
      35     ui->label->setPixmap(QPixmap::fromImage(image));
      36 
      37     // 將圖片加載到共享內存
      38     QBuffer buffer;
      39     buffer.open(QBuffer::ReadWrite);
      40     QDataStream out(&buffer);
      41     out << image;
      42     int size = buffer.size();
      43     if (!sharedMemory.create(size)) {             //create 函數創建指定大小的共享內存段,自動將共享內存段連接到本進程
      44         ui->label->setText(tr("無法創建共享內存段!"));
      45         return;
      46     }
      47     sharedMemory.lock();
      48     char *to = (char*)sharedMemory.data();
      49     const char *from = buffer.data().data();
      50     memcpy(to, from, qMin(sharedMemory.size(), size));     //使用memcpy將buffer對應的數據段復制到共享內存段
      51     sharedMemory.unlock();
      52 }
      53 
      54 void Dialog::loadFromMemory()
      55 {
      56     if (!sharedMemory.attach()) {
      57         ui->label->setText(tr("無法連接到共享內存段,\n"
      58                               "請先加載一張圖片!"));
      59         return;
      60     }
      61 
      62     QBuffer buffer;
      63     QDataStream in(&buffer);
      64     QImage image;
      65 
      66     sharedMemory.lock();
      67     buffer.setData((char*)sharedMemory.constData(), sharedMemory.size());
      68     buffer.open(QBuffer::ReadOnly);
      69     in >> image;
      70     sharedMemory.unlock();
      71 
      72     sharedMemory.detach();                               //現在已經不需要使用共享內存了。所以調用detach函數將進程與共享內存段進行分離
      73     ui->label->setPixmap(QPixmap::fromImage(image));
      74 }
      75 
      76 void Dialog::detach()
      77 {
      78     if (!sharedMemory.detach())
      79         ui->label->setText(tr("無法從共享內存中分離!"));
      80 }
      81 
      82 // 從文件中加載圖片按鈕
      83 void Dialog::on_loadFromFileButton_clicked()
      84 {
      85     loadFromFile();
      86 }
      87 
      88 // 從共享內存顯示圖片
      89 void Dialog::on_loadFromSharedMemoryButton_clicked()
      90 {
      91     loadFromMemory();
      92 }

       

          

      posted on 2019-10-20 21:10  AmyBKLP  閱讀(1875)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国内少妇人妻偷人精品| 亚洲综合av男人的天堂| 人妻系列无码专区免费 | 性xxxx搡xxxxx搡欧美| 亚洲欧洲一区二区天堂久久| 亚洲日本va午夜在线影院| 国产精品区一区第一页| 久久人妻无码一区二区三区av| 国产成人毛片无码视频软件| 韩国无码av片在线观看| 成人亚洲欧美一区二区三区| 久久亚洲av成人一二三区| 国产成人精品永久免费视频| 国产日韩精品一区在线不卡| 久久精品久久黄色片看看| 亚洲成在人网站av天堂| 2020年最新国产精品正在播放| 免费观看日本污污ww网站69| 精品剧情V国产在线观看| 人妻中文字幕不卡精品| 久久国产乱子精品免费女| 精品精品亚洲高清a毛片| 久爱无码精品免费视频在线观看| 亚洲毛片多多影院| 国产目拍亚洲精品区一区| 国产jlzzjlzz视频免费看| 国产精品高清一区二区三区| 久久精品国产一区二区三区| 狠狠色噜噜狠狠狠狠av不卡| 国产午夜一区二区在线观看| 国内精品免费久久久久电影院97| 四虎av永久在线精品免费观看| 亚在线观看免费视频入口| 日韩高清在线亚洲专区国产| 国产免费无遮挡吸奶头视频| 久久精品国产亚洲av麻豆小说| 麻豆麻豆麻豆麻豆麻豆麻豆| 国产乱码精品一区二区三| 精品国产成人a在线观看| 国模肉肉视频一区二区三区| 久久无码中文字幕免费影院蜜桃|