Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: merke от Декабрь 21, 2010, 13:48



Название: Необходимо склеить две формы
Отправлено: merke от Декабрь 21, 2010, 13:48
Всем привет!

Как можно склеить две формы как например в winamp?

Я это делаю следующим "дедушкиным" способом:

Код:
  dlg->show();
  dlg->resize(width(), height());;
  dlg->move(pos().x()+width(), pos().y());

*dlg это наследник класса QDialog

Далее делаю вот так:

Код:
void MainWindow::moveEvent(QMoveEvent *event)
{
    dlg->move(pos().x()+width(), pos().y());
}

Работать то работает, только вот всё происходит так долго. Перемещение второй формы происходит примерно за 1 секунду, что смотрится очень грубо. Получается как то не ассихронно)

Может есть какое то другое решение?


Название: Re: Необходимо склеить две формы
Отправлено: BRE от Декабрь 21, 2010, 13:56
Положить две эти формы на один общий виджет?


Название: Re: Необходимо склеить две формы
Отправлено: merke от Декабрь 21, 2010, 13:58
О здорово! Я что то не подумал о таком!

А можно примерный алгоритм?


Название: Re: Необходимо склеить две формы
Отправлено: BRE от Декабрь 21, 2010, 14:02
О здорово! Я что то не подумал о таком!

А можно примерный алгоритм?
Создать общий виджет.
Добавить горизонтальный layout.
И поместить в него две формы.


Название: Re: Необходимо склеить две формы
Отправлено: merke от Декабрь 21, 2010, 14:11
Спасибо, выполнил описанные выше шаги.

Диалоги добавляются но уже без заголовков окон, просто как виджеты(

Делаю так   

Код:
    ui->horizontalLayout->addWidget(dlg);
    ui->horizontalLayout->addWidget(dlg_2);


Название: Re: Необходимо склеить две формы
Отправлено: GreatSnake от Декабрь 21, 2010, 16:18
Цитировать
Получается как то не ассихронно)
Получается как раз асинхронно.
На Х-ах, если используете WM синхронно и не получится.
Хотите быстро - отказывайтесь от услуг WM. Но тогда получите другие заморочки.