Russian Qt Forum
Март 29, 2024, 02:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
QTabBar и QTableView/QSqlTableModel
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTabBar и QTableView/QSqlTableModel (Прочитано 7875 раз)
chu
Гость
QTabBar и QTableView/QSqlTableModel
«
:
Февраль 28, 2011, 22:41 »
есть 2 таблицы с одинаковыми полями, хочу переключатся между ними по табам.
сделал так:
Код:
CheckForm::CheckForm(QWidget *parent)
:QDialog(parent)
{
setWindowFlags(Qt::Window);
checkModel = new QSqlRelationalTableModel;
checkModel->setTable("send");
checkModel->setRelation(Check_Product, QSqlRelation("product", "id", "title"));
checkModel->setSort(Check_Id, Qt::AscendingOrder);
checkModel->setHeaderData(Check_Mark, Qt::Horizontal, tr("обозначение"));
checkModel->setHeaderData(Check_Det, Qt::Horizontal, tr("наименование"));
checkModel->setHeaderData(Check_SendSum, Qt::Horizontal, tr("сдано"));
checkModel->setHeaderData(Check_SendDate, Qt::Horizontal, tr("дата и время сдачи"));
checkModel->setHeaderData(Check_RecvSum, Qt::Horizontal, tr("принято"));
checkModel->setHeaderData(Check_RecvDate, Qt::Horizontal, tr("дата и время приема"));
checkModel->setHeaderData(Check_Product, Qt::Horizontal, tr("Изделие"));
checkModel->setEditStrategy(QSqlTableModel::OnFieldChange);
checkModel->select();
checkTableView = new QTableView;
checkTableView->setModel(checkModel);
checkTableView->setColumnHidden(Check_Id, true);
checkTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
checkTableView->resizeColumnsToContents();
deleteButton = new QPushButton(tr("Удалить"));
closeButton = new QPushButton(tr("Закрыть"));
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteCheck()));
tabBar = new QTabBar(this);
tabBar->addTab(tr("из 3 в 4"));
tabBar->addTab(tr("из 3 на склад"));
connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(changeTable(int)));
QGridLayout *lay = new QGridLayout;
lay->addWidget(tabWidget, 0, 0);
lay->addWidget(checkTableView, 1, 0, 4, 1);
lay->addWidget(deleteButton, 1, 1, 1, 1);
lay->addWidget(closeButton, 3,1,1,1);
lay->setRowStretch(2,10);
setLayout(lay);
resize (1024, 640);
setWindowTitle(tr("Акты сдачи/приёмки"));
}
void CheckForm::changeTable(int tab){
if(tab==0){
checkModel->setTable("send");
checkModel->select();
}
if(tab==1){
checkModel->setTable("store");
checkModel->select();
}
}
пришлось создать 2 TableView, т.к. QTabWidget не хотел создавать 2 таба с одинаковыми виджетами.
при переключении сбрасываются названия заголовков и появляются пустые строки,
кол-во пустых строк = кол-ву строк предыдушего TableView.
как исправить?
«
Последнее редактирование: Март 01, 2011, 17:13 от chu
»
Записан
maint
Гость
Re: QTabWidget и QTableView/QSqlTableModel
«
Ответ #1 :
Март 01, 2011, 06:57 »
внимательно смотрим в текст. Каждый раз НА ОДНОЙ И ТОЙ ЖЕ глобально описаной переменной заново создается новая модель и табвиджет
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QTabWidget и QTableView/QSqlTableModel
«
Ответ #2 :
Март 01, 2011, 09:18 »
Цитировать
пришлось создать 2 TableView, т.к. QTabWidget не хотел создавать 2 таба с одинаковыми виджетами.
См. QTabBar.
Записан
Qt 5.11/4.8.7 (X11/Win)
chu
Гость
Re: QTabWidget и QTableView/QSqlTableModel
«
Ответ #3 :
Март 01, 2011, 17:19 »
Цитата: GreatSnake от Март 01, 2011, 09:18
Цитировать
пришлось создать 2 TableView, т.к. QTabWidget не хотел создавать 2 таба с одинаковыми виджетами.
См. QTabBar.
переписал с QTabBar, спасибо
Цитата: maint от Март 01, 2011, 06:57
внимательно смотрим в текст. Каждый раз НА ОДНОЙ И ТОЙ ЖЕ глобально описаной переменной заново создается новая модель и табвиджет
не совсем понял что ты хотел сказать... при переключении по табам нужно по новой создавать модель?
Записан
chu
Гость
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #4 :
Март 04, 2011, 09:52 »
осознал нелепость своего изначального подхода
все переделал: теперь 2 модели, 1 вью, 0 проблем.
подскажите пожалуйста как убрать пробел между QTabBar и QTableView
сейчас компаную так:
Код:
QGridLayout *lay = new QGridLayout;
lay->addWidget(tabBar, 0, 0);
lay->addWidget(checkTableView, 1, 0, 4, 1);
lay->addWidget(deleteButton, 1, 1, 1, 1);
lay->addWidget(closeButton, 3,1,1,1);
lay->setRowStretch(2,10);
setLayout(lay);
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #5 :
Март 04, 2011, 10:20 »
Код
C++ (Qt)
lay
->
setSpacing
(
0
)
;
Записан
Qt 5.11/4.8.7 (X11/Win)
chu
Гость
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #6 :
Март 04, 2011, 10:49 »
Цитата: GreatSnake от Март 04, 2011, 10:20
Код
C++ (Qt)
lay
->
setSpacing
(
0
)
;
не совсем то что мне нужно, так остается линия между виджетами.
хочется вид как в QTabWidget
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #7 :
Март 04, 2011, 10:54 »
Цитировать
подскажите пожалуйста как убрать пробел между QTabBar и QTableView
Что просил, то и посоветовал
Цитировать
не совсем то что мне нужно, так остается линия между виджетами.
хочется вид как в QTabWidget
Код
C++ (Qt)
tabBar
->
setDrawBase
(
false
)
;
Записан
Qt 5.11/4.8.7 (X11/Win)
chu
Гость
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #8 :
Март 04, 2011, 12:22 »
тогда новый вопрос: Как у вьюхи верхнюю грань убрать?
хотя... это тоже не выход. нужно что-то с фоном сделать
«
Последнее редактирование: Март 04, 2011, 12:27 от chu
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #9 :
Март 04, 2011, 12:26 »
Что такое "верхняя грань вьюхи"?
Записан
Qt 5.11/4.8.7 (X11/Win)
chu
Гость
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #10 :
Март 04, 2011, 12:36 »
вложил 2 файла для примера. 1 - QTabWidget, 2- QTabBar
как сделать тот что с баром похожим на тот что с виджетом?
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #11 :
Март 04, 2011, 12:45 »
Обычными средствами никак, т.к. именно QTabWidget отрисовывает такую рамку.
Записан
Qt 5.11/4.8.7 (X11/Win)
chu
Гость
Re: QTabBar и QTableView/QSqlTableModel
«
Ответ #12 :
Март 04, 2011, 13:02 »
Ясно, оставлю как есть.
Спасибо за помощь,
GreatSnake
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...