Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Day от Февраль 10, 2014, 13:20



Название: Еще раз про MDI
Отправлено: Day от Февраль 10, 2014, 13:20
Хочется, чтобы при максимизации субокна, у него оставался его title, чтоб его можно было "возить" по всему area (с появлением скроллов, разумеется), и чтобы другие окна сохраняли свою геометрию.
Вот, придумал такой костыль. Вроде, работает.
dsub.h:
Код:
class DSub : public QWidget {
  Q_OBJECT
public:
  QMdiSubWindow *su;
public:
  DSub();
public slots:
  void States(Qt::WindowStates, Qt::WindowStates);
};
dsub.c:
Код:
DSub::DSub() : QWidget()  // QGLWidget()
{
   ....
   su = par->area->addSubWindow(this);
   QObject::connect(su, SIGNAL(windowStateChanged(Qt::WindowStates, Qt::WindowStates)),
          this, SLOT(States(Qt::WindowStates, Qt::WindowStates)));
}
//----------------
void DSub::States(Qt::WindowStates old, Qt::WindowStates ne)
{
  if (ne & Qt::WindowMaximized) {
     su->setWindowState(old);
     su->move(0, 0);
     su->resize(mw->area->width(), mw->area->height());
  }
}
А нельзя ли этого добиться как-то более цивилизовано...
mw - это MainWindow


Название: Re: Еще раз про MDI
Отправлено: Day от Февраль 10, 2014, 19:05
Похоже, склоняюсь к тому, чтоб вообще от MDI отказаться. Его механизмы смутны, и мне мало что дают. tile и cascade как-нибудь сам реализую.
Есть MainWindow, центральный виджет, все окошки - его детки...
Завтра с утра и займусь... :)