簡體   English   中英

如何通過Qt按鈕在main.cpp中調用對象的成員函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM