Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: folibis от Июнь 30, 2010, 02:29



Название: Добавить панель инструментов в QDialog
Отправлено: folibis от Июнь 30, 2010, 02:29
Собственно, проблема - мне нужно добавить QToolBar в QDialog. В редакторе форм это сделать не получается.
Так же не могу добавить QStatusBar.
Если делать еще одно окно QMainWindow то его нельзя сделать модальным.
Можно конечно на диалоговую форму добавить фрейм и на него кнопки но все это выглядит совсем не так как тулбар.


Название: Re: Добавить панель инструментов в QDialog
Отправлено: asvil от Июнь 30, 2010, 07:20
QDialog::setContentsMargins(0, QToolBar::sizeHint().height,  0, 0);

Переопределить QDialog::resizeEvent(event)
QToolBar::setGeometry(0, 0, QDialog::width(), sizeHint().height);


Название: Re: Добавить панель инструментов в QDialog
Отправлено: folibis от Июнь 30, 2010, 08:07
А все, решил.
Добавил на форму QVBoxLayout, сверху QToolBar, снизу QFrame. в тулбар уже добавил экшенов.
Странно что разработчики не дали возможность сделать это штатными средствами редактора форм, как это сделано, например, для QMainWindow.


Название: Re: Добавить панель инструментов в QDialog
Отправлено: asvil от Июнь 30, 2010, 08:15
Также можно было использовать и QLayout::setMenuBar(), если toolbar должен находиться только сверху.


Название: Re: Добавить панель инструментов в QDialog
Отправлено: navrocky от Июнь 30, 2010, 09:16
Положи QMainWindow на свой диалог и сними ему флажок Qt::Window.

Код:
wnd_ = new QMainWindow(this);
wnd_->setWindowFlags(wnd_->windowFlags() & !Qt::Window);

Таким способом получишь функционал QMainWindow в своем диалоге. Более того, можно многократно вкладывать QMainWindow один в другой )


Название: Re: Добавить панель инструментов в QDialog
Отправлено: vdann от Июль 07, 2010, 16:18
Положи QMainWindow на свой диалог и сними ему флажок Qt::Window.

Код:
wnd_ = new QMainWindow(this);
wnd_->setWindowFlags(wnd_->windowFlags() & !Qt::Window);

Таким способом получишь функционал QMainWindow в своем диалоге. Более того, можно многократно вкладывать QMainWindow один в другой )

ошибочка:
Код:
wnd_->setWindowFlags(wnd_->windowFlags() & ~Qt::Window);