Невозможно закрыть QDialog из QPushButton внутри диалога с действием закрытия - PullRequest
0 голосов
/ 05 февраля 2020

Я искал два дня, но не нашел никакой помощи по моей проблеме, чтобы закрыть немодальное диалоговое окно из QPushButton внутри этого диалога.

Диалог вызывается из QMainWindow, все работает, но я не могу закрыть диалог по кнопке, работает только крестик, я не понимаю, почему это так сложно, так как это не модально, я не жду операторов "accept" или "reject", close "or" done "более приспособлены.

Вот мой код для вызова диалога:

void MainWindow::showSystraySettingsDialog()
{
    sDialog = new SystrayDialog(this);
    //sDialog.show();
    sDialog->setModal(false);
    sDialog->setAttribute(Qt::WA_DeleteOnClose);
    sDialog->show();
    sDialog->raise();
    sDialog->activateWindow();
} 

член" sDialog "является указателем, объявленным в" MainWindow.h "

Вот действие, вызываемое для закрытия диалогового окна в моем диалоговом коде: SystrayDialog. cpp:

void SystrayDialog::createActions()
{
    closeAction = new QAction(tr("&Close"),this);
    connect(closeAction, &QAction::triggered,this, &SystrayDialog::close);
}

Кнопка закрытия:

    closeButton = new QPushButton;
    closeButton->setText(QString(tr("&Close")));
    closeButton->addAction(closeAction);

Я не здесь нужно понимать необходимость сигналов, я не жду каких-либо условий для закрытия окна, этот диалог не будет передавать никакие аргументы или значения в окно ...

Заранее спасибо за вашу помощь!

1 Ответ

0 голосов
/ 05 февраля 2020

Вы устанавливаете QAction, используя addAction () для QPushButton, действие не сработает при нажатии кнопки QPushButton. Возможно, вам придется подключить QPushButton click Signal к Qdialog close Slot, который работает идеально. Или Вам может потребоваться подключить сигнал Click () QPushButton для закрытия сработавшего сигнала Action, как показано ниже, connect (closeButton, SIGNAL (clicked ()), closeAction, SIGNAL (triggered ()));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...