我正在使用 Qt,并且在 GUI 上有一个开始/停止按钮。当应用程序打开时,我在 main.cpp 文件中调用了一些这样的代码:
QApplication a(argc, argv);
MainWindow w;
w.show();
Something something;
something.start();
在 Qt 创建的 mainwindow.cpp 文件中,我有一个在按下停止按钮时调用的函数:
void MainWindow::on_pushButton_2_released()
{
std::cout << "stopped" << std::endl;
}
如何从 void MainWindow::on_pushButton_2_released()
调用 something.stop()
?或者我如何重构我的代码以便我可以访问该类实例?
最佳答案
这个问题有很多方法,这取决于这个程序的结构到底应该是什么样子。一种简单的方法是向 MainWindow 类添加一个构造函数,该类采用指向 something
的指针并将该指针存储为成员,即
class MainWindow : public QMainWindow
{
public:
...
MainWindow(Something* something) : something_ptr(something)
{
...
}
...
private:
Something* something_ptr;
...
void MainWindow::on_pushButton_2_released()
{
something_ptr->stop();
}
}
然后从你的主要功能:
QApplication a(argc, argv);
Something something;
MainWindow w(&something);
something.start();
w.show();
由于您可能会在此之后调用 a.exec()
,因此在应用程序退出之前,某些内容将一直存在(因为 exec()
是一个阻塞调用)。
关于c++ - 如何从 Qt 按钮调用 main.cpp 中对象的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313987/