[英]How can I call a member function of an object in main.cpp from a Qt button?
我正在使用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()
void MainWindow::on_pushButton_2_released()
? 或者如何重新組織代碼,以便可以訪問該類實例?
有許多解決此問題的方法,這取決於該程序的結構究竟是什么樣。 一種簡單的方法是向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()
是阻塞調用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.