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

Jai*_*Jai 5 c++ user-interface qt

我有两个Widget有单独的实现.它们是...
MessageInboxUi
ComposeMessageUi

两者都将全屏显示.

在主窗口中,我按以下顺序添加两个小部件

ComposeMessageUi* ptrEditor = new ComposeMessageUi(this); // these are inside 
MessageInboxUi * ptrInbox = new MessageInboxUi(this);     // MainWindow Constructor
Run Code Online (Sandbox Code Playgroud)

因此,当我在MessageInboxUi显示时调用ComposeMessageUi的show函数时,它不会显示(因为它显示在MessageInboxUi后面).

如何将ComposeMessageUi置于最前面(我的意思是,如何重新定义其z顺序)

Seb*_*nge 8

如果您希望ComposeMessageUi阻止主窗口设置模态标志

void setModal(true);
Run Code Online (Sandbox Code Playgroud)

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

void setWindowModality(Qt::ApplicationModal);
Run Code Online (Sandbox Code Playgroud)

(参见替代模态模式的文档)

要将窗户放在前面,您可以使用:

void QWidget::raise();
Run Code Online (Sandbox Code Playgroud)