大同建设银行保安招聘网站,南阳千牛网站建设,企业 网站建设,品牌营销推广代运营方法#xff1a;使用单例模式
将主窗口设计为单例模式。在子界面中通过单例访问主窗口实例#xff0c;并调用公共函数。
// mainwindow.h
#include QMainWindowclass MainWindow : public QMainWindow {Q_OBJECTpublic:static MainWindow instance() {static …
方法使用单例模式
将主窗口设计为单例模式。在子界面中通过单例访问主窗口实例并调用公共函数。
// mainwindow.h
#include QMainWindowclass MainWindow : public QMainWindow {Q_OBJECTpublic:static MainWindow instance() {static MainWindow instance;return instance;}void publicFunction();private:MainWindow(QWidget *parent nullptr);~MainWindow();MainWindow(const MainWindow) delete;MainWindow operator(const MainWindow) delete;// 其他成员变量和函数
};// mainwindow.cpp
#include mainwindow.h
#include QDebugMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {// 初始化代码
}MainWindow::~MainWindow() {// 析构代码
}void MainWindow::publicFunction() {qDebug() Public function called;
}// subwidget.h
#include QWidgetclass SubWidget : public QWidget {Q_OBJECTpublic:explicit SubWidget(QWidget *parent nullptr);private slots:void onButtonClicked();
};// subwidget.cpp
#include subwidget.h
#include mainwindow.h
#include QPushButton
#include QVBoxLayoutSubWidget::SubWidget(QWidget *parent) : QWidget(parent) {QPushButton *button new QPushButton(Call Main Window Function, this);QVBoxLayout *layout new QVBoxLayout(this);layout-addWidget(button);connect(button, QPushButton::clicked, this, SubWidget::onButtonClicked);
}void SubWidget::onButtonClicked() {MainWindow::instance().publicFunction();
}// main.cpp
#include mainwindow.h
#include subwidget.h
#include QApplicationint main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w MainWindow::instance();SubWidget subWidget;w.show();subWidget.show();return a.exec();
}