当前位置:   article > 正文

qt c++ 子界面调用主窗口函数

qt c++ 子界面调用主窗口函数

方法:使用单例模式

  1. 将主窗口设计为单例模式。
  2. 在子界面中通过单例访问主窗口实例,并调用公共函数。
  1. // mainwindow.h
  2. #include <QMainWindow>
  3. class MainWindow : public QMainWindow {
  4. Q_OBJECT
  5. public:
  6. static MainWindow& instance() {
  7. static MainWindow instance;
  8. return instance;
  9. }
  10. void publicFunction();
  11. private:
  12. MainWindow(QWidget *parent = nullptr);
  13. ~MainWindow();
  14. MainWindow(const MainWindow&) = delete;
  15. MainWindow& operator=(const MainWindow&) = delete;
  16. // 其他成员变量和函数
  17. };
  18. // mainwindow.cpp
  19. #include "mainwindow.h"
  20. #include <QDebug>
  21. MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
  22. // 初始化代码
  23. }
  24. MainWindow::~MainWindow() {
  25. // 析构代码
  26. }
  27. void MainWindow::publicFunction() {
  28. qDebug() << "Public function called";
  29. }
  30. // subwidget.h
  31. #include <QWidget>
  32. class SubWidget : public QWidget {
  33. Q_OBJECT
  34. public:
  35. explicit SubWidget(QWidget *parent = nullptr);
  36. private slots:
  37. void onButtonClicked();
  38. };
  39. // subwidget.cpp
  40. #include "subwidget.h"
  41. #include "mainwindow.h"
  42. #include <QPushButton>
  43. #include <QVBoxLayout>
  44. SubWidget::SubWidget(QWidget *parent) : QWidget(parent) {
  45. QPushButton *button = new QPushButton("Call Main Window Function", this);
  46. QVBoxLayout *layout = new QVBoxLayout(this);
  47. layout->addWidget(button);
  48. connect(button, &QPushButton::clicked, this, &SubWidget::onButtonClicked);
  49. }
  50. void SubWidget::onButtonClicked() {
  51. MainWindow::instance().publicFunction();
  52. }
  53. // main.cpp
  54. #include "mainwindow.h"
  55. #include "subwidget.h"
  56. #include <QApplication>
  57. int main(int argc, char *argv[]) {
  58. QApplication a(argc, argv);
  59. MainWindow& w = MainWindow::instance();
  60. SubWidget subWidget;
  61. w.show();
  62. subWidget.show();
  63. return a.exec();
  64. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/730641
推荐阅读
相关标签
  

闽ICP备14008679号