У меня есть класс, который является подклассом QDialog
без перекрывая exec()
, accept()
или reject()
и еще один, который вызывает Dialog
класс внутри его mousePaintEvent
:Использование QDialog внутри MousePressEvent
void Canvas::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton){
if (dialog->isVisible()){
dialog->setModal(true);
dialog->move(QWidget::mapToGlobal(event->pos()));
//I connect the dialog's accepted signal to the CallingClass's slot, that uses the information taken from the dialog
connect(dialog, &Dialog::accepted, this, &CallingClass::slot);
dialog->exec();
}
}
if (dialog->isVisible()){
if (dialog->rect().contains(event->pos())){
dialog->reject();
}
}
}
Я попытался с помощью существование Dialog для check, но delete
действительно не работал (я положил его после dialog.reject()), я даже попытался использовать bool, который я, опять же, установил в false после dialog.reject() в последнем, если, но я начните думать, что ничего не работает после .reject(). Как мне продолжить?
, что вы на самом деле пытаетесь сделать с точки зрения высокого уровня? – UmNyobe
Это событие рисования «Холста» (которое является QOpenGlWidget). Я хочу открыть диалоговое окно с щелчком мыши левой кнопкой мыши, из которого я могу выбрать, что рисовать на холсте, и, хотя диалог открыт, я хочу, чтобы его можно было закрыть, щелкнув его. –