WindowStayOnTopHint yerine SetWindowModality kullanın ve her ikisi de modal modes (Qt :: WindowModal ve Qt :: ApplicationModal) diğer uygulamaların modal pencerenizin üstünde olmasına izin verir.
LE: Sen QDialog en belgelere sayfa ApplicationModal ve WindowModal arasındaki fark hakkında daha fazla bilgi bulabilirsiniz here
LE 2: Sorun çözmek için, böylece bir üst ayarlamak kalmamasıdır Bu, her çocuk penceresi için bir ana (ana pencereniz hariç her şey) ayarlar ve her şey beklediğiniz gibi çalışır (alt pencereleri üst öğenin üstünde olur, ancak diğer uygulama pencerelerinin üstünde olmayacaktır):
int main(int argc, char** argv)
{
QApplication a(argc, argv);
QWidget w;
QVBoxLayout* layout = new QVBoxLayout(&w);
QPushButton* btn = new QPushButton("Show a non-modal window");
layout->addWidget(btn);
QWidget* mainWindow = &w;
QObject::connect(btn, &QPushButton::clicked, [mainWindow]()
{
QWidget* dlg = new QWidget(mainWindow);
QVBoxLayout* dlgLayout = new QVBoxLayout(dlg);
dlg->setWindowFlags(Qt::Window);
QLabel* lbl = new QLabel("Non-modal window...", dlg);
dlgLayout->addWidget(lbl);
dlg->show();
});
w.show();
return a.exec();
}
Şu anda qt yüklü değil, bu yüzden çok yardımcı olamıyorum, ama Qt :: Tool bayrak olarak denediniz mi? – Jepessen
Denedim, işe yaramıyor. Qt belgesinde "Bir ebeveyn varsa, araç penceresi her zaman üstünde tutulur. Eğer ebeveyn yoksa, Qt :: WindowStaysOnTopHint'i de kullanabilirsiniz". Benimki de ebeveyn değil. – Nagawica
ve bir ana uygulamanın widget'ları olduklarını düşünerek ebeveynleri olmamasının bir sebebi var mı? – Jepessen