如何重新定义Qt Widget中的Z-Order

6

我有两个小部件,它们分别拥有不同的实现。它们是:

  • 消息收件箱界面(MessageInboxUi)
  • 撰写邮件界面(ComposeMessageUi)

两者都会显示在全屏中。

我在mainwindow中按照以下顺序添加了这两个小部件:

ComposeMessageUi* ptrEditor = new ComposeMessageUi(this); // these are inside 
MessageInboxUi * ptrInbox = new MessageInboxUi(this);     // MainWindow Constructor

当我在显示消息收件箱时调用ComposeMessageUi的show函数,它不会显示(因为它显示在MessageInboxUi后面)。

我该如何使ComposeMessageUi显示在最前面(我的意思是,如何重新定义它们的z顺序)


看一下QStackedLayout。也许这个链接可以帮助你:http://harmattan-dev.nokia.com/docs/library/html/qt4/qstackedlayout.html - Mostafa
1个回答

8
如果您希望ComposeMessageUi阻塞主窗口,请使用modal标志。
void setModal(true);

如果您的代码不是从QDialog派生而来,那么您最终需要使用

void setWindowModality(Qt::ApplicationModal);

要查看其他的模态模式,请参考文档

如果只是想将窗口置于前台,可以使用以下方法:

void QWidget::raise();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接