Название: mdi окна Отправлено: kadr от Декабря 21, 2009, 12:29 Привет всем.
Помогите решить проблему, делаю прогу с mdi окнами: main_form - это класс виджета! main_form *m_f = new main_form; m_f->setAttribute(Qt::WA_DeleteOnClose); ui->area->addSubWindow(m_f); m_f->show(); m_f->setFixedSize(427,171); Так вот проблема в том, что размер не становиться фиксированным и цвет формы серый, хотя я ставил желтый, одним словом все стандартное, как передать в эту форму цвет и фиксацию размера? Название: Re: mdi окна Отправлено: BRE от Декабря 21, 2009, 14:23 Ты попробуй указывать фиксированный объект не твоему внутреннему виджету, а внешнему QMdiSubWindow.
Указатель на него, как раз возвращает: ui->area->addSubWindow(m_f); Название: Re: mdi окна Отправлено: kadr от Декабря 21, 2009, 15:40 Ты попробуй указывать фиксированный объект не твоему внутреннему виджету, а внешнему QMdiSubWindow. Спасибо помогло. У меня вот возник еще один вопрос, как сделать так, что бы открывалась всего одна копия виджета:Указатель на него, как раз возвращает: ui->area->addSubWindow(m_f); lgot_rech *lgota = new lgot_rech; lgota->setAttribute(Qt::WA_DeleteOnClose); ui->area->addSubWindow(lgota)->setFixedSize(708,383); lgota->show(); то есть, если в данный момент форма уже открыта, что бы он не давал больше открывать другие копии? Название: Re: mdi окна Отправлено: BRE от Декабря 21, 2009, 15:43 Посмотри на:
QList<QMdiSubWindow *> QMdiArea::subWindowList ( WindowOrder order = CreationOrder ) const Название: Re: mdi окна Отправлено: kadr от Декабря 21, 2009, 16:00 Посмотри на: Посмотрел, но не совсем понял, как это может мне помочь:QList<QMdiSubWindow *> QMdiArea::subWindowList ( WindowOrder order = CreationOrder ) const ui->area->subWindowList(QMdiArea::CreationOrder); Что мне с этим делать дальше? Название: Re: mdi окна Отправлено: BRE от Декабря 21, 2009, 16:12 Посмотри на: Посмотрел, но не совсем понял, как это может мне помочь:QList<QMdiSubWindow *> QMdiArea::subWindowList ( WindowOrder order = CreationOrder ) const ui->area->subWindowList(QMdiArea::CreationOrder); Что мне с этим делать дальше? В функции, где создаются новые окна: * получи список всех открытых окон * пробегись по ним и проверь, открыто ли окно нужного типа * если нет - создай и сделай видимым * если да - переведи его на передний план Название: Re: mdi окна Отправлено: kadr от Декабря 21, 2009, 16:42 void nozologia::on_vvod_rech_triggered()
{ int i = 0,fl = 0; lgot_rech *lgota = new lgot_rech; lgota->setAttribute(Qt::WA_DeleteOnClose); ui->area->addSubWindow(lgota)->setFixedSize(708,383); while (ui->area->subWindowList(QMdiArea::CreationOrder).count() > 0) { if (ui->area->subWindowList(QMdiArea::CreationOrder).value(i)->isVisible()) { ... } else { ... } i++; } } Одним словом вот такой алгоритмик я использую, вопрос, как определить что это то окно которое мне нужно? Название: Re: mdi окна Отправлено: MoPDoBoPoT от Декабря 21, 2009, 16:59 Код
Код
как определить что это то окно которое мне нужно? По-разному. Зависит от конкретной задачи. Можно проверять: - тип виджета (qobject_cast<lgot_rech *>subWindow->widget()) - если окно с таким типом должно быть единственным - имя виджета (subWindow->widget()->objectName()) - заголовок окна (subWindow->windowTitle()) ... |