Я хочу реализовать кнопку выхода в моем приложении, которое имеет следующую настройку:
У меня есть основная функция, которая выглядит так:
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
У меня также есть функция mainWindow, сгенерированная IDE QT Creator.
Я проектирую графический интерфейс с помощью Qt Designer, и когда я хочу, чтобы кнопка что-то делала при нажатии, я использую такую функцию:
void on_selection_clicked();
Я надеюсь, что настройка теперь достаточно описана.
Теперь к моей проблеме: я хочу реализовать кнопку, которая, при нажатии, закрывает окно и приложение. Сначала я попытался реализовать это в такой функции:
void on_exit_clicked();
Но я не знаю, что здесь.
Тогда я услышал о приближении через QObject::connect
, но у меня есть два вопроса:
1.) Где я должен положить это? В основной функции?
2.) я могу получить доступ к объекту просто через имя объекта, указанное в QT Designer?
нет, вы должны подключить его в конструкторе MainWindow
connect(ui->exit,SIGNAL(clicked()),QCoreApplication::instance(), SLOT(exit()));
QCoreApplication::instance()->exit()
выйдет из приложения
да через поле пользовательского интерфейса в MainWindow см. код выше
Я не знаю, какую версию Qt вы используете, поэтому я полагаю, что Qt 5.0 (механизм сигналов / слотов был обновлен).
QWidget имеет слот QWidget :: close ().
QPushButton предоставляет сигнал QPushButton :: clicked (bool checked = false)
Таким образом, вы можете подключить их в конструкторе вашего главного окна:
QObject::connect(your_button, &QPushButton::clicked, this, &QWidget::close());
Также я предлагаю изучить файлы, сгенерированные из файлов * .ui — чтобы у вас было более глубокое понимание того, что происходит.