Qt:从main函数访问Widget并实现退出按钮

时间:2013-09-18 14:15:48

标签: c++ qt signals slot qt-signals

我想在我的应用程序中实现一个退出按钮,它具有以下设置: 我有一个主要功能,如下所示:

QApplication a(argc, argv);
MainWindow w;

w.show();

return a.exec();

我还有一个由QT Creator IDE生成的mainWindow函数。
我使用Qt Designer设计GUI,当我想要一个按钮在点击时做某事时,我使用这样的函数:

void on_selection_clicked();

我希望现在已经充分描述了设置 现在我的问题:我想实现一个按钮,当单击它时,终止窗口和应用程序。我首先尝试在这样的函数中实现它:

void on_exit_clicked();

但我不知道到这里。
然后我通过QObject::connect听到了一个问题,但我有两个问题:
1.)我应该把它放在哪里?在主函数?
2.)我可以简单地通过QT Designer中给出的对象名来访问对象吗?

2 个答案:

答案 0 :(得分:1)

  1. 不,你应该在MainWindow的构造函数中连接它

    connect(ui->exit,SIGNAL(clicked()),QCoreApplication::instance(), SLOT(exit()));
    

    QCoreApplication::instance()->exit()将退出该应用

  2. 是的,通过MainWindow中的ui字段查看上面的代码

答案 1 :(得分:1)

我不知道您使用的是哪个Qt版本,因此我假设Qt 5.0(信号/插槽机制已更新)。

  • QWidget有插槽QWidget :: close()。

  • QPushButton提供信号QPushButton :: clicked(bool checked = false)

因此,您可以在MainWindow的构造函数中连接它们:

QObject::connect(your_button, &QPushButton::clicked, this, &QWidget::close());

另外,我建议查看从* .ui文件生成的文件 - 这样您就可以更深入地了解正在发生的事情。