我從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