2010-05-17 36 views
0

即時在我的應用程序中使用無模式對話框,當我嘗試使用無模式對話框移動命令從主窗口
甚至出現無模式對話框時,爲什麼? (順便說一句,如果我刪除移動命令每一件事情的作品,我可以看到對話框調用的時候,我嘗試將其移動到系統托盤時代
這裏somecode: 中號QT無模式對話窗口dos'nt對移動命令的響應

odelessDialog* ModelessDialog= new ModelessDialog(this); 
ModelessDialog->setModal(false); 
ModelessDialog->setAttribute(Qt::WA_DeleteOnClose); 
int topLeft_x = m_SystrayReq.topLeft().x(); 
int topLeft_y = m_SystrayReq.topLeft().y(); 
// the valus of x & y are just fine . 
     ModelessDialog->move(topLeft_x,topLeft_y); 
     ModelessDialog->show(); 
+0

由於對話框有一個父對象,move()是相對於父對象的。 您的系統托盤座標可能是全球性的?然後使用QWidget :: mapFromGlobal()來映射它們。 – 2010-05-18 06:40:53

回答

3

由於對話框有一個父,座標移動()採取是相對於父窗口小部件。您的系統托盤座標可能是全球?然後使用QWidget :: mapFromGlobal()來映射他們。

+0

這很可能是這種情況,這意味着如果他的父對話框位於最左上角的任何位置,他可能會將其對話框移出屏幕,這將導致無法看到它。 – 2010-05-18 16:31:46

0

看來你正在移動對話框在系統托盤的左上角移動命令放置對話框的左上角,如果它指示移動,如果Frank's global-local changes沒有什麼區別,那可能是系統托盤將始終繪製在對話框上方(因此不允許顯示)。

相關問題