Russian Qt Forum
Май 18, 2012, 19:50
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
(Модератор:
Sergeich
) >
table ячейки строки в виде одной ячейки
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: table ячейки строки в виде одной ячейки (Прочитано 851 раз)
semantic
Новичок
Offline
Сообщений: 37
table ячейки строки в виде одной ячейки
«
:
Январь 13, 2012, 08:21 »
как при наведении курсором на ячейку таблицы, выделять строку целиком, т.е. нужно визуально все ячейки, представлять как одну.
«
Последнее редактирование: Январь 16, 2012, 13:30 от semantic
»
Записан
alexman
phpBB Супер
Offline
Сообщений: 1031
Re: table ячейки строки в виде одной ячейки
«
Ответ #1 :
Январь 13, 2012, 09:19 »
Можно отлавливать движение мыши, определять номер строки, void QTableView::selectRow ( int row ) [slot].
Записан
Пишу на С++ за еду)
Bepec
phpBB Житель матрицы
Offline
Сообщений: 1280
Re: table ячейки строки в виде одной ячейки
«
Ответ #2 :
Январь 13, 2012, 09:25 »
Отлавливать наведение на ячейку.
Или использовать CSS, там есть данный функционал.
Свойство selection mode позволяет выделять целиком всю строку (прорисовка остаётся та же, но выделение идёт на строку)
PS мб я не понял вопроса, ты хочешь просто выделять строку целиком, или же ты хочешь перерисовывать все ячейки в 1 строку, без разграничителей?
Записан
"Мастер простых решений" © andrew.k
semantic
Новичок
Offline
Сообщений: 37
Re: table ячейки строки в виде одной ячейки
«
Ответ #3 :
Январь 13, 2012, 09:29 »
Цитата: Bepec от Январь 13, 2012, 09:25
Отлавливать наведение на ячейку.
Или использовать CSS, там есть данный функционал.
Свойство selection mode позволяет выделять целиком всю строку (прорисовка остаётся та же, но выделение идёт на строку)
PS мб я не понял вопроса, ты хочешь просто выделять строку целиком, или же ты хочешь перерисовывать все ячейки в 1 строку, без разграничителей?
да да, нужно без ограничения делать, но к примеру при двойном клике на строку редактировать первую ячейку строки, во как нужно. такой функционал наблюдается в TC(командер)
Записан
alexman
phpBB Супер
Offline
Сообщений: 1031
Re: table ячейки строки в виде одной ячейки
«
Ответ #4 :
Январь 13, 2012, 09:40 »
Не знаю можно ли разбить как то ячейку в таблице, но объединить можно... поколдуй с void QTableView::setSpan ( int row, int column, int rowSpanCount, int columnSpanCount ).
Еще можно более экзотически: при наведении на строку поверх таблицы рисовать виджет размеров строки (соблюдая стиль ...) ну и там нужный текст.
Цитировать
как при наведении курсором на ячейку таблицы, выделять строку целиком, т.е. нужно визуально все ячейки, представлять как одну.
Не расскажешь зачем это надо?
Записан
Пишу на С++ за еду)
Bepec
phpBB Житель матрицы
Offline
Сообщений: 1280
Re: table ячейки строки в виде одной ячейки
«
Ответ #5 :
Январь 13, 2012, 09:43 »
Тогда устанавливай свойство selection behavior. ( в 1 сообщении ошипся.)
Будет выделяться вся строка. А вот чтобы редактировать только 1 ячейку, нужен будет делеган с редактором.
table_->setShowGrid(false) скроет границы между ячейками.
«
Последнее редактирование: Январь 13, 2012, 09:46 от Bepec
»
Записан
"Мастер простых решений" © andrew.k
semantic
Новичок
Offline
Сообщений: 37
Re: table ячейки строки в виде одной ячейки
«
Ответ #6 :
Январь 13, 2012, 10:59 »
Цитата: Bepec от Январь 13, 2012, 09:43
Тогда устанавливай свойство selection behavior. ( в 1 сообщении ошипся.)
да это при клике выделяется строка, но нужно еще и при наведении выделять, с mouse ничего не нашел
Цитировать
Будет выделяться вся строка. А вот чтобы редактировать только 1 ячейку, нужен будет делеган с редактором.
можно тут подробнее?
Цитировать
table_->setShowGrid(false) скроет границы между ячейками.
и опять таки, при выделении строки границы видны.
Записан
semantic
Новичок
Offline
Сообщений: 37
Re: table ячейки строки в виде одной ячейки
«
Ответ #7 :
Январь 13, 2012, 11:31 »
с выделение разобрался. on_tableWidget_cellEntered
другие вопросы в силе
Записан
Bepec
phpBB Житель матрицы
Offline
Сообщений: 1280
Re: table ячейки строки в виде одной ячейки
«
Ответ #8 :
Январь 13, 2012, 12:21 »
Насчёт выделение - в поиск.
Насчёт делегата - в поиск (наводка
Код:
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index ) const;
)
Темы поднимались не раз и там всё разжёвано.
Записан
"Мастер простых решений" © andrew.k
semantic
Новичок
Offline
Сообщений: 37
Re: table ячейки строки в виде одной ячейки
«
Ответ #9 :
Январь 13, 2012, 12:26 »
Цитата: Bepec от Январь 13, 2012, 12:21
Насчёт выделение - в поиск.
Насчёт делегата - в поиск (наводка
Код:
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index ) const;
)
Темы поднимались не раз и там всё разжёвано.
делегат нашел, пасиб на доводку.
а если нужно при двойном щелчке запретить редактирование ячейки, а допустим при нажатии на кнопку открыть доступ к редактированию, я так понимаю делегат запрещает полностью редактирование.
«
Последнее редактирование: Январь 13, 2012, 12:28 от semantic
»
Записан
stima
Чайник
Offline
Сообщений: 80
Re: table ячейки строки в виде одной ячейки
«
Ответ #10 :
Январь 13, 2012, 12:38 »
Дам более расширенную подсказку (по крайней мере я реализовываю так):
Код:
pseudo code
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if ( option.state == QStyle::State_MouseOver )
{
emit setRowHovered(true, index.row);
}
else
{
emit setRowHovered(false, index.row);
}
}
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index ) const; ---- вызываеться когда клиент начал редактирование.
Переопределить метод Q*Widget
Код:
pseudo code
void mouseDoubleClickEvent ( QMouseEvent * event )
{
event->ignore();
}
void keyPressEvent(QKeyEvent *event)
{
if ( event == myEvent ) {
celectedRow->activate();
} else {
parent(event);
}
}
}
Я бы сделал чтото в этом духе.
«
Последнее редактирование: Январь 13, 2012, 12:44 от stima
»
Записан
Bepec
phpBB Житель матрицы
Offline
Сообщений: 1280
Re: table ячейки строки в виде одной ячейки
«
Ответ #11 :
Январь 13, 2012, 12:41 »
Делегат есть всегда
Вызвать стандартный делегат тоже можно всегда
Вызов редактора делегата производится по
Код:
EditTriggers
- там уже можно определить реагировать на чтото, или игнорить.
PS а вообще делегат такая прекрасная штука, что подстраивается легко ^^
Записан
"Мастер простых решений" © andrew.k
semantic
Новичок
Offline
Сообщений: 37
Re: table ячейки строки в виде одной ячейки
«
Ответ #12 :
Январь 13, 2012, 13:06 »
пока не допонял ваши мысли, вот делегат на запрет редактирования колонок
Цитировать
class Delegate : public QItemDelegate
{
Q_OBJECT
public:
Delegate(QObject * parent = 0) : QItemDelegate(parent) {
}
virtual QWidget * createEditor ( QWidget *, const QStyleOptionViewItem &,
const QModelIndex &) const
{
return 0;
}
};
но как сделать, чтоб при нажатии кнопки(определенной) редактирование ячейки выделенной колонки стало возможно
«
Последнее редактирование: Январь 13, 2012, 13:12 от semantic
»
Записан
Bepec
phpBB Житель матрицы
Offline
Сообщений: 1280
Re: table ячейки строки в виде одной ячейки
«
Ответ #13 :
Январь 13, 2012, 13:13 »
Вопрос какую кнопку вы хотите? Имеете в виду любую кнопку на клавиатуре(X,Z,Y)? Или же кнопку/галку/виджет которую поставите на форму?
Записан
"Мастер простых решений" © andrew.k
semantic
Новичок
Offline
Сообщений: 37
Re: table ячейки строки в виде одной ячейки
«
Ответ #14 :
Январь 13, 2012, 13:17 »
Цитата: Bepec от Январь 13, 2012, 13:13
Вопрос какую кнопку вы хотите? Имеете в виду любую кнопку на клавиатуре(X,Z,Y)? Или же кнопку/галку/виджет которую поставите на форму?
и то и другое, и с формы редактировать и при помощи горячих клавиш.
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...