Я открываю окно QDialog из QMainWindow.Теперь, когда я нажимаю окно QDialog, оно не всегда закрывается при первом нажатии - мне нужно нажать несколько раз (3-4), чтобы закрыть его.У меня есть closeEvent
слот с простым event->accept();
внутри.
Вот как я вызываю QDialog из главного окна:
void MyManager::DialogContainerOpen(type t)
{
if(pMyDialogContainer == NULL)
{
pMyDialogContainer = new MyDialogContainer();
}
int returnVal = QDialog::Rejected;
if(!m_bContainer)
{
m_bContainer = true;
int returnVal = pMyDialogContainer->exec();
if(returnVal != QDialog::Accepted ) {
m_bContainer = false;
}
}
}
Это первая проблема.
Вторая проблема заключается в том, как мне установить, чтобы окна QDialog НЕ находились сверху?(Я не хочу, чтобы оно блокировало родительское окно.
ОБНОВЛЕНИЕ
хорошо, я обнаружил, что функция из MainWindow, которая отображает contexMenu и внутри него, имеет единственное соединение/ slot является активным для вызова, поэтому я просто использовал разъединение, я не знаю, является ли он лучшим sulotion, но он работает.
Теперь у меня есть последняя проблема. Вот код, который я надеюсь, его хорошо
void MainWindowContainer::ShowContextMenu(const QPoint& pos) // this is a slot
{
QModelIndex modelIndx;
QPoint globalPos = ui.treeView_mainwindow->mapToGlobal(pos);
bool b1 = connect(OpenAction, SIGNAL(triggered()),m_SignalMapper, SLOT(map()) );
m_SignalMapper->setMapping(OpenAction,voidID);
bool b2 = connect(m_SignalMapper, SIGNAL(mapped(QString)), this, SLOT(OpenWin(QString)));
QAction* selectedItem = ContextMenu.exec(globalPos);
}
void MainWindowContainer::OpenWin(QString gid)
{
//disconnect(sender0, SIGNAL(overflow()),receiver1, SLOT(handleMathError()));
disconnect(m_SignalMapper, SIGNAL(mapped(QString)),this, SLOT(OpenWin(QString)));
disconnect(OpenAction,SIGNAL(triggered()),m_SignalMapper, SLOT(map()));
....
....
}