Как управлять укладкой окон на уровне приложений X11?
Есть ли способ иметь 2 окна в X11 по следующим критериям:
- Второе окно всегда остается поверх первого
- Второе окно не остается поверх окон других приложений
- Нет мерцания при переключении окон
- Оба окна должны быть окнами верхнего уровня (не друг под другом) и не блокировать
Создание второго модального почти работает, но оно блокирует первый, что нежелательно.
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();
}
Насколько я могу судить, все ваши условия выполнены.