使用 Qt 将 linux 子窗口保持在父窗口之上

Posted

技术标签:

【中文标题】使用 Qt 将 linux 子窗口保持在父窗口之上【英文标题】:Keep linux child window on top of parent window with Qt 【发布时间】:2013-01-30 06:50:11 【问题描述】:

我正在使用 qt 编写一个 linux(这里:Ubuntu)应用程序。 我将主窗口设置在顶部并全屏,然后制作其他子窗口。问题是一旦单击主窗口,这些窗口就会在主窗口后面。 有什么办法可以避免这种情况并将子窗口保持在主窗口的顶部? 先谢谢了

【问题讨论】:

【参考方案1】:

我试图用一个非常简单的设置来重现你的问题,但我失败了,因为我写的内容似乎完全符合你所描述的行为:全屏打开窗口,然后在我的示例中只有一个按下主窗口中的按钮并单击它时,会生成一个子窗口,但对我来说,即使将焦点放在父窗口上,这个窗口也始终位于父窗口之上。 你能检查一下这是否也有你想要的行为吗?

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "ui_MainWindow.h"

class MainWindow : public QMainWindow, public Ui::MainWindow

    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);

private:
    Ui::MainWindow *ui;
    public slots:
    void on_pushButton_clicked();
;

#endif // MAINWINDOW_H            

MainWindow.cpp

#include "MainWindow.h"

#include <QDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)

    setupUi(this);



void MainWindow::on_pushButton_clicked()

  QDialog *dialog = new QDialog(this);
  dialog->show();

ma​​in.cpp

#include "MainWindow.h"
#include <QApplication>

int main(int argc, char **argv)

    QApplication a(argc, argv);
    MainWindow w;
    w.showFullScreen();

    return a.exec();

【讨论】:

以上是关于使用 Qt 将 linux 子窗口保持在父窗口之上的主要内容,如果未能解决你的问题,请参考以下文章

Qt 加载消息应保持在父小部件的顶部并居中

如何使 MDI 子窗口保持在其兄弟窗口之上?

QT5怎样设置父窗口刷新时,不刷新子窗口?

qt - 在父窗口/小部件类中初始化子小部件的目的是啥?

如何用QT实现多个按钮信号响应不同的槽函数

创建一个即使在全屏模式下也保持在顶部的新窗口(Linux 上的 Qt)