赞
踩
- // mainwindow.h
- #include <QMainWindow>
-
- class MainWindow : public QMainWindow {
- Q_OBJECT
-
- public:
- 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 <QDebug>
-
- MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
- // 初始化代码
- }
-
- MainWindow::~MainWindow() {
- // 析构代码
- }
-
- void MainWindow::publicFunction() {
- qDebug() << "Public function called";
- }
-
- // subwidget.h
- #include <QWidget>
-
- class SubWidget : public QWidget {
- Q_OBJECT
-
- public:
- explicit SubWidget(QWidget *parent = nullptr);
-
- private slots:
- void onButtonClicked();
- };
-
- // subwidget.cpp
- #include "subwidget.h"
- #include "mainwindow.h"
- #include <QPushButton>
- #include <QVBoxLayout>
-
- SubWidget::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 <QApplication>
-
- int main(int argc, char *argv[]) {
- QApplication a(argc, argv);
- MainWindow& w = MainWindow::instance();
- SubWidget subWidget;
-
- w.show();
- subWidget.show();
-
- return a.exec();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。