QT无模式对话窗口对移动命令的响应

时间:2010-05-17 21:57:20

标签: c++ qt

我在我的应用程序中使用无模式对话框,当我尝试使用MainWindow中的无模式对话框移动命令时 无模式对话框甚至出现了,为什么? (顺便说一句,如果我删除了移动命令,每一件事都有效,我可以在调用时看到对话框,我试着把它移到系统时代。
这里有些代码: 中号

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();

2 个答案:

答案 0 :(得分:3)

由于对话框具有父对象,因此坐标move()取相对于父窗口小部件。你的系统坐标可能是全局的?然后使用QWidget :: mapFromGlobal()来映射它们。

答案 1 :(得分:0)

您似乎正在将对话框移动到系统托盘的左上角。 move命令将对话框的左上角放在您指示它移动的位置。如果Frank's global-local changes没有区别,可能是系统托盘将始终在对话框上方绘制(因此不允许显示)。