我从QMainWindow打开QDialog窗口。现在当我按下QDialog窗口 它并不总是在第一次按下 - 我需要按几次(3-4)关闭它。 我有closeEvent
插槽,里面有简单的event->accept();
。QDialog在按下X时不会立即关闭,如何使它不在顶部?
这是我如何调用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窗口不在顶部? (我不想它阻止的父窗口。
UPDATE
以及我发现,从主窗口的函数,示出了contexMenu 和里面具有连接单/槽是保持调用所以我只是用断开 我不知道它的最佳sulotion但其工作。
现在我juat有最后的问题。 这里是代码我希望它的确定
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()));
....
....
}
当你不重写'closeEvent'时会发生什么? (这不是顺便说一句) – Mat