Russian Qt Forum
Ноябрь 25, 2024, 04:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как правильно добавить toolbar к QTableView  (Прочитано 7385 раз)
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 - может есть аналог?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 18, 2010, 18:12 »

>>Пробовал и так, всеравно тулбар создается поверх таблицы:
а где ему ещё появлятся?

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

Юра.
Kolobok
Гость
« Ответ #2 : Апрель 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 );
Записан
sindbad07
Гость
« Ответ #3 : Апрель 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();
Записан
sindbad07
Гость
« Ответ #4 : Апрель 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 и славится тем, что любыми классами можно жонглировать как угодно  Улыбающийся
Записан
MoPDoBoPoT
Гость
« Ответ #5 : Апрель 18, 2010, 20:54 »

Есть такой метод QLayout::setMenuBar(QWidget * widget), благодаря которому не надо иметь именно вертикальный компоновщик и учитывать последовательность добавления в него виджетов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.