zoukankan      html  css  js  c++  java
  • Qt 界面做成dll以便调用

    1、将界面做成dll

    修改pro文件

    1 DEFINES += WIDGETDLL_LIBRARY
    2 TEMPLATE = lib

    修改头文件

     1 #if defined(WIDGETDLL_LIBRARY)
     2 #  define WIDGETDLLSHARED_EXPORT Q_DECL_EXPORT
     3 #else
     4 #  define WIDGETDLLSHARED_EXPORT Q_DECL_IMPORT
     5 #endif
     6  
     7 class WIDGETDLLSHARED_EXPORT WidgetDll:public QWidget, private Ui::Form
     8 {
     9     Q_OBJECT
    10 public:
    11  
    12     WidgetDll(QWidget *parent = 0);
    13  
    14 signals:
    15     void buttonPressed(QString);
    16  
    17 private slots:
    18     void on_pushButton_clicked();
    19 };

    生成dll

    2、新建桌面工程,在工程中添加引用dll的头文件

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3  
     4 #include <QMainWindow>
     5 #include "widgetdll.h" //dll头文件
     6  
     7 namespace Ui {
     8 class MainWindow;
     9 }
    10  
    11 class MainWindow : public QMainWindow
    12 {
    13     Q_OBJECT
    14  
    15 public:
    16     explicit MainWindow(QWidget *parent = 0);
    17     ~MainWindow();
    18 private slots:
    19     void getBtn(QString); //接受dll中的信号
    20 private:
    21     Ui::MainWindow *ui;
    22  
    23     WidgetDll *m_mainwidget;
    24 };
    25  
    26 #endif // MAINWINDOW_H

    在构造函数中添加

    1 m_mainwidget = new WidgetDll(this);
    2 setCentralWidget(m_mainwidget);
    3 connect(m_mainwidget,&WidgetDll::buttonPressed,this,&MainWindow::getBtn);

    结果:centerwidget为dll,点击pushbutton向主程序发生消息

    总结:

    统一程序的接口,分解程序。在升级功能时只需要升级dll即可

  • 相关阅读:
    Vue,动画-修改v-前缀
    Vue,动画-使用过度类名实现动画(渐变)
    sqli-labs闯关之21-30关
    sqli-labs闯关之11-20关,第18关有burpsuit的具体使用方法
    sqli-labs闯关之1-10关
    sqli-labs的搭建
    DVWA-SQL注入
    华为NAT配置
    基础过滤工具——ACL控制访问列表(Access Control List)
    DHCP——基于接口地址的池的DHCP
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14024746.html
Copyright © 2011-2022 走看看