Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt::QColorDialog поверх FullScreen


Автор: pcapH 4.5.2012, 11:51
Суть такова. Делаю некое подобие графического редактора.
Есть class ActiveWindow : public QMainWindow;
В нем отображаю изображение через QPixmap.

Делаю ActiveWindow::showFullScreen();

В какой-то момент, после щелчка по кнопке должно отобразиться окно выбора цвета QColorDialog. Оно отображается под окном ActiveWindow - этот диалог невидим.

Код

  m_pColorDialog = new QColorDialog;
   m_pColorDialog->setOption(QColorDialog::DontUseNativeDialog);
   connect(m_pColorDialog,SIGNAL(accepted()),this,SLOT(ColorChoosed()));


Код

   m_pColorDialog->show();  // это диалог
   m_pColorDialog->raise();
   m_pColorDialog->activateWindow();
//   m_pColorDialog->setWindowFlags(Qt::WindowStaysOnTopHint); // с этой строчкой, даже без ActiveWindow, диалог появляется на сотую секунды и пропадает.
   win.lower();  // это ActiveWindow  (::showFullScreen() )


Кажется, эта проблема (расположение под полноэкранным виджетом) есть не только c QColorDialog.
В идеале, окно ActiveWindow должно быть всегда на заднем плане моего приложения.

Помогите, кто чем может

Автор: borisbn 4.5.2012, 12:23
Цитата(pcapH @  4.5.2012,  11:51 Найти цитируемый пост)
m_pColorDialog->show();  // это диалог

Код
m_pColorDialog->exec();

пробовал ?

Автор: pcapH 4.5.2012, 12:32
Блин. Прошу прощения.
Разобрался.

Был у меня класс MainPalette, который, по сути, являлся менеджером окон.
Код

   flag |= Qt::WindowStaysOnTopHint;
   MainPalette palette(0,flag);

И этот класс являлся родителем (QObject* parent) для ActiveWindow - вот флаг WindowStaysOnTopHint и передавался к сыну.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)