有没有办法在 X11 中有 2 个窗口,具有以下条件:
- 第二个窗口始终位于第一个窗口之上
- 第二个窗口不会停留在其他应用程序的窗口之上
- 切换窗口时不闪烁
- 两个窗口都需要是顶级窗口(不是彼此下的父级)并且不阻塞
制作第二个模态几乎可以工作,但它会阻止第一个模态,这是不希望的。
以下是如何在 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();
}
据我所知,您的所有条件都已满足。