1

有没有办法在 X11 中有 2 个窗口,具有以下条件:

  • 第二个窗口始终位于第一个窗口之上
  • 第二个窗口不会停留在其他应用程序的窗口之上
  • 切换窗口时不闪烁
  • 两个窗口都需要是顶级窗口(不是彼此下的父级)并且不阻塞

制作第二个模态几乎可以工作,但它会阻止第一个模态,这是不希望的。

4

1 回答 1

1

以下是如何在 Qt 中通过创建非模态QDialog小部件来做到这一点。

#include <QObject>
#include <QApplication>
#include <QPushButton>
#include <QDialog>

int main(int argc, char **argv)
{
    QApplication a(argc, argv);

    QPushButton p1("moo", 0);

    QDialog d1(&p1);
    QPushButton p2("roo", &d1);

    QDialog d2(&p1);
    QPushButton p3("goo", &d2);

    QObject::connect(&p1, &QPushButton::clicked, [&](){p2.setText("w00t!");});
    QObject::connect(&p2, &QPushButton::clicked, [&](){p1.setText("n00t!");});
    QObject::connect(&p3, &QPushButton::clicked, [&](){p1.setText("eh?"); p2.setText("meh!");});

    p1.resize(400, 400);
    p2.resize(200, 200);
    p3.resize(200, 200);

    p1.show();
    p2.show();
    p3.show();
    d1.show();
    d2.show();

    return a.exec();
}

据我所知,您的所有条件都已满足。

于 2017-06-26T21:44:21.960 回答