Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: sindbad07 от Апрель 18, 2010, 17:54



Название: Как правильно добавить toolbar к QTableView
Отправлено: sindbad07 от Апрель 18, 2010, 17:54
Подскажите пожалуйста как правильно добавить toolbar к QTableView, пробовал с помощью layout и dockwidget, но toolbar отображается поверх таблицы:

 QTableView * view = new QTableView();
 QMdiSubWindow * subWindow = mdiArea->addSubWindow( view ) ;
...
 QHBoxLayout * layout = new QHBoxLayout( view );
 layout->setAlignment(Qt::AlignTop);
 QToolBar * viewtoolbar = new QToolBar("Действия", view);
 layout->addWidget( viewtoolbar );
...
 subWindow->show();


Пробовал и так, всеравно тулбар создается поверх таблицы:

QTableView * view = new QTableView();
QMdiSubWindow * subWindow = mdiArea->addSubWindow( view ) ;
...
QWidget * widget = new QWidget;
QVBoxLayout * layout = new QVBoxLayout( widget );
layout->addWidget( new QToolBar );
QDockWidget *dock_widget = new QDockWidget("Действия", view);
dock_widget->setAllowedAreas(Qt::TopDockWidgetArea);
dock_widget->setWidget( widget );


В QTableView также нет функции addDockWidget() как в QMainWindow - может есть аналог?


Название: Re: Как правильно добавить toolbar к QTableView
Отправлено: lit-uriy от Апрель 18, 2010, 18:12
>>Пробовал и так, всеравно тулбар создается поверх таблицы:
а где ему ещё появлятся?

Мысленно поменяй табличное представление на QWidget, а панель инструментов на QPushButton, что получится?


Название: Re: Как правильно добавить toolbar к QTableView
Отправлено: Kolobok от Апрель 18, 2010, 18:18
попробуй так

Код:
QMainWindow *parent = new QMainWindow(mdiArea, Qt::SubWindow);
QTableView * view = new QTableView(parent);
QToolBar * viewtoolbar = new QToolBar("Действия", parent);
parent->setCentralWidget(view);
parent->addToolBar ( viewtoolbar );
QMdiSubWindow * subWindow = mdiArea->addSubWindow( parent );


Название: Re: Как правильно добавить toolbar к QTableView
Отправлено: sindbad07 от Апрель 18, 2010, 18:31
Спасибо всем, ноя я решил проблему так (так по идее и надо делать):

//создаем новый виджет
QWidget * widget = new QWidget;

//с помощью вертикального layout'а компонуем элементы формы на этом виджете
QVBoxLayout * layout = new QVBoxLayout( widget );
QTableView * view = new QTableView();
QToolBar * toolbar = new QToolBar("Действия", view);
layout->addWidget( toolbar );
layout->addWidget( view );

//указываем созданный виджет-контейнер в качестве содержимого нового окна (MDI)
QMdiSubWindow * subWindow = mdiArea->addSubWindow(widget);
subWindow->show();


Название: Re: Как правильно добавить toolbar к QTableView
Отправлено: sindbad07 от Апрель 18, 2010, 18:42
попробуй так

Код:
QMainWindow *parent = new QMainWindow(mdiArea, Qt::SubWindow);
QTableView * view = new QTableView(parent);
QToolBar * viewtoolbar = new QToolBar("Действия", parent);
parent->setCentralWidget(view);
parent->addToolBar ( viewtoolbar );
QMdiSubWindow * subWindow = mdiArea->addSubWindow( parent );

Такой метод возможно тоже работает (не проверял), просто в моем окошке помимо TableView выше него будут и другие элементы (поля ввода и т.п.), поэтому лучше использовать layout, а вообще выверт интересный, спасибо за пример, а вообще qt и славится тем, что любыми классами можно жонглировать как угодно  :)


Название: Re: Как правильно добавить toolbar к QTableView
Отправлено: MoPDoBoPoT от Апрель 18, 2010, 20:54
Есть такой метод QLayout::setMenuBar(QWidget * widget), благодаря которому не надо иметь именно вертикальный компоновщик и учитывать последовательность добавления в него виджетов.