Qt一步一步實現插件通信(附源碼)


 

前一章已經實現了主程序調用加載插件功能,這一章描述主程序和插件間通信功能

說道Qt的通信必須要了解信號和槽的機制原理,這里不做論述,不清楚的同學去看看信號和槽機制

不廢話直接上步驟,在上一章的基礎下進行修改

第一步:在插件中定義一個接收槽

#include "mainwidget.h"
#include "ui_mainwidget.h"
#include "qtimer.h"
#include "qdatetime.h"
mainwidget::mainwidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::mainwidget)
{
    ui->setupUi(this);
    timer = new QTimer(this);
    //新建定時器
    connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));
    //關聯定時器計滿信號和相應的槽函數
    timer->start(1000);
}

mainwidget::~mainwidget()
{
    delete ui;
}
void mainwidget::timerUpDate()
{
    QDateTime time = QDateTime::currentDateTime();//獲取系統現在的時間
    QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //設置顯示格式
    QString strr= strr.fromLocal8Bit("當前時間:")+str;//調用中文顯示
    ui->label->setText(strr);
}

void mainwidget::time_start()
{
    timer->start();
    ui->label->setText("start");
}
void mainwidget::time_stop()
{
    timer->stop();
    ui->label->setText("stop");
}

第二步 生成插件

這一步和上一章內容不變,替換要實現的插件的內容即可

點擊運行生成插件,找到插件testpluginplugin.dll

復制粘貼到主程序的程序運行目錄下

第三步 主程序加載插件並設置信號槽

    connect(ui->action,SIGNAL(triggered()), testwidget,SLOT(time_start()));
    connect(ui->action_2,SIGNAL(triggered()),testwidget,SLOT(time_stop()));

效果圖:

1)加載插件成功后默認時間是不斷刷新

2)點擊停止后時間顯示stop

3)點擊開始,時間繼續刷新

這里就完成了主界面操作插件的功能

 源碼下載http://download.csdn.net/detail/huangyuancao/6654197

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM