1、将界面做成dll
修改pro文件
DEFINES += WIDGETDLL_LIBRARY'
TEMPLATE = lib
修改头文件
#if defined(WIDGETDLL_LIBRARY)
# define WIDGETDLLSHARED_EXPORT Q_DECL_EXPORT
#else
# define WIDGETDLLSHARED_EXPORT Q_DECL_IMPORT
#endif
class WIDGETDLLSHARED_EXPORT WidgetDll:public QWidget, private Ui::Form
{
Q_OBJECT
public:
WidgetDll(QWidget *parent = 0);
signals:
void buttonPressed(QString);
private slots:
void on_pushButton_clicked();
};
生成dll
2、新建桌面工程,在工程中添加引用dll的头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include "widgetdll.h" //dll头文件
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void getBtn(QString); //接受dll中的信号
private:
Ui::MainWindow *ui;
WidgetDll *m_mainwidget;
};
#endif // MAINWINDOW_H
在构造函数中添加
m_mainwidget = new WidgetDll(this);
setCentralWidget(m_mainwidget);
connect(m_mainwidget,&WidgetDll::buttonPressed,this,&MainWindow::getBtn);
结果:centerwidget为dll,点击pushbutton向主程序发生消息
image.png
总结:
统一程序的接口,分解程序。在升级功能时只需要升级dll即可