Название: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 08:21 как при наведении курсором на ячейку таблицы, выделять строку целиком, т.е. нужно визуально все ячейки, представлять как одну.
Название: Re: table ячейки строки в виде одной ячейки Отправлено: alexman от Январь 13, 2012, 09:19 Можно отлавливать движение мыши, определять номер строки, void QTableView::selectRow ( int row ) [slot].
Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 09:25 Отлавливать наведение на ячейку.
Или использовать CSS, там есть данный функционал. Свойство selection mode позволяет выделять целиком всю строку (прорисовка остаётся та же, но выделение идёт на строку) PS мб я не понял вопроса, ты хочешь просто выделять строку целиком, или же ты хочешь перерисовывать все ячейки в 1 строку, без разграничителей? Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 09:29 Отлавливать наведение на ячейку. Или использовать CSS, там есть данный функционал. Свойство selection mode позволяет выделять целиком всю строку (прорисовка остаётся та же, но выделение идёт на строку) PS мб я не понял вопроса, ты хочешь просто выделять строку целиком, или же ты хочешь перерисовывать все ячейки в 1 строку, без разграничителей? да да, нужно без ограничения делать, но к примеру при двойном клике на строку редактировать первую ячейку строки, во как нужно. такой функционал наблюдается в TC(командер) Название: Re: table ячейки строки в виде одной ячейки Отправлено: alexman от Январь 13, 2012, 09:40 Не знаю можно ли разбить как то ячейку в таблице, но объединить можно... поколдуй с void QTableView::setSpan ( int row, int column, int rowSpanCount, int columnSpanCount ).
Еще можно более экзотически: при наведении на строку поверх таблицы рисовать виджет размеров строки (соблюдая стиль ...) ну и там нужный текст. Цитировать как при наведении курсором на ячейку таблицы, выделять строку целиком, т.е. нужно визуально все ячейки, представлять как одну. Не расскажешь зачем это надо?Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 09:43 Тогда устанавливай свойство selection behavior. ( в 1 сообщении ошипся.)
Будет выделяться вся строка. А вот чтобы редактировать только 1 ячейку, нужен будет делеган с редактором. table_->setShowGrid(false) скроет границы между ячейками. Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 10:59 Тогда устанавливай свойство selection behavior. ( в 1 сообщении ошипся.) да это при клике выделяется строка, но нужно еще и при наведении выделять, с mouse ничего не нашелЦитировать Будет выделяться вся строка. А вот чтобы редактировать только 1 ячейку, нужен будет делеган с редактором. можно тут подробнее?Цитировать table_->setShowGrid(false) скроет границы между ячейками. и опять таки, при выделении строки границы видны.Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 11:31 с выделение разобрался. on_tableWidget_cellEntered
другие вопросы в силе Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 12:21 Насчёт выделение - в поиск.
Насчёт делегата - в поиск (наводка Код: QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index ) const; Темы поднимались не раз и там всё разжёвано. Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 12:26 Насчёт выделение - в поиск. Насчёт делегата - в поиск (наводка Код: QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index ) const; Темы поднимались не раз и там всё разжёвано. делегат нашел, пасиб на доводку. а если нужно при двойном щелчке запретить редактирование ячейки, а допустим при нажатии на кнопку открыть доступ к редактированию, я так понимаю делегат запрещает полностью редактирование. Название: Re: table ячейки строки в виде одной ячейки Отправлено: stima от Январь 13, 2012, 12:38 Дам более расширенную подсказку (по крайней мере я реализовываю так):
Код: pseudo code Переопределить метод Q*Widget Код: pseudo code Я бы сделал чтото в этом духе. Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 12:41 Делегат есть всегда :) Вызвать стандартный делегат тоже можно всегда ;)
Вызов редактора делегата производится по Код: EditTriggers PS а вообще делегат такая прекрасная штука, что подстраивается легко ^^ Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 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; } }; Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 13:13 Вопрос какую кнопку вы хотите? Имеете в виду любую кнопку на клавиатуре(X,Z,Y)? Или же кнопку/галку/виджет которую поставите на форму?
Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 13:17 Вопрос какую кнопку вы хотите? Имеете в виду любую кнопку на клавиатуре(X,Z,Y)? Или же кнопку/галку/виджет которую поставите на форму? и то и другое, и с формы редактировать и при помощи горячих клавиш.Название: Re: table ячейки строки в виде одной ячейки Отправлено: stima от Январь 13, 2012, 13:18 Это не безопасный код. Вы возвращаете 0, но потом можете забыть куда и зачем его возвращаете (да и механика скрыта, может сам Qt гдето обратиться к 0 а Вы будете гадать где же это сегфолт), а во вторых Вам же всетаки нужно редактировать колонки, просто откинуть дабл клик мышкой, а это лиш через mouseDoubleClickevent.
Код: virtual QWidget * createEditor ( QWidget *, const QStyleOptionViewItem &, п.с. Напииште последовательно на бумажке, что Вам надо и последовательность действий пользователя)), будет легче понять, что переорпеделять и что добавлять/урезать. Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 13:22 Горячими клавишами, мышкой, кнопками... Оо... Вы хоть понимаете, что сейчас говорите кашу -
Цитировать мне нужен велосипед без колёс, что летает над землёй, чтоб броня бы как у танка, ещё плавник как у акулы, и мех рыжий как у лисы, и чтоб ещё когда рядом человек, оно должно играть симфонию баха на скрипках, причём выполненных из натуральных пород деревьев. Определитесь что вам надо. Напишите на листочке/блокноте. Отчеркните, что ненадо. Подумайте, мб вы что-то забыли? Добавьте. А после раздумий пришлите сюда всё, что получилось. 1 рецепт на всё вам никто не даст. А вот по частям разобьете и объясните - поможем. Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 13:26 Горячих клавиш, мышкой, кнопки Оо... Вы хоть понимаете, что сейчас говорите кашу - почему каша редактировать ячейку нужно тока этими способами:Цитировать мне нужен велосипед без колёс, что летает над землёй, чтоб броня бы как у танка, ещё плавник как у акулы и мех рыжий как у лиса и чтоб ещё когда рядом человек, оно бы ещё и играло симфонию баха на скрипках, причём выполненных из натуральных пород деревьев. Определитесь что вам надо. Напишите на листочке/блокноте. Отчеркните что ненадо. Подумайте, мб вы что-то забыли? Добавьте. А после раздумий пришлите сюда всё, что получилось. 1. кнопкой на форме. 2. сочетанием определенных клавиш и что тут странного вы увидели? нормальный подход. или вы считаете, что в word нажать на copy или сочетание ctrl+c это изврат. я не согласен Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 13:29 п.с. Напииште последовательно на бумажке, что Вам надо и последовательность действий пользователя)), будет легче понять, что переорпеделять и что добавлять/урезать. я и пишу, что описанными двумя способами(см. выше) разрешить редактирование, а по двойному щелчку запретить. Вроде все логично и понятно пишу, откуда стока вопросов=) Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 13:30 В таблице, выбрав нужную ячейку, нажимать сочетание клавиш чтобы отредактировать её? Бред.
Возьмите Word/Excel/Explorer/Total Commander/Windows. Простейшие функции - простые кнопки. Сочетания идут, когда уже стандартные нельзя использовать. Чем вас двойной щелчок и Enter не устраивает? Насчёт кнопки вопросов нет. Кнопкой на форме обычно и дублируют, чтоб ясно было - тут можно редактировать ;) Название: Re: table ячейки строки в виде одной ячейки Отправлено: stima от Январь 13, 2012, 13:35 Исходя из ваших слов вам просто нужно:
Код: void mouseDoubleClick(QMouseEvent *e) { Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 13:37 В таблице, выбрав нужную ячейку, нажимать сочетание клавиш чтобы отредактировать её? Бред. ну да тока в TC F2 и кнопка переименования, у меня аналагично.Возьмите Word/Excel/Explorer/Total Commander/Windows. Простейшие функции - простые кнопки. Сочетания идут, когда уже стандартные нельзя использовать. Цитировать Чем вас двойной щелчок и Enter не устраивает? а то, что, по двойному клику будут другие действия.Насчёт кнопки вопросов нет. Кнопкой на форме обычно и дублируют, чтоб ясно было - тут можно редактировать ;) Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 13, 2012, 13:42 Исходя из ваших слов вам просто нужно: это у tablewidget?Код: void mouseDoubleClick(QMouseEvent *e) { Название: Re: table ячейки строки в виде одной ячейки Отправлено: _OLEGator_ от Январь 13, 2012, 13:48 Код
с нужными флагами: Код
Открыть редактирование по надобности Код
Оно? Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 13, 2012, 14:06 Цитировать Вызов редактора делегата производится по Код: Код: EditTriggers - там уже можно определить реагировать на чтото, или игнорить. Уже писал, но видно пропустил ТС. Почитайте про него в ассистенте, OLEGator любезно предоставил пример. Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 16, 2012, 08:32 Все спаси получилось
Код:
Название: Re: table ячейки строки в виде одной ячейки Отправлено: alexman от Январь 16, 2012, 09:24 5-ый пост глянь.
Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 16, 2012, 09:37 Ты сначала читай, потом пробуй. А потом делаешь скрин и показываешь, как у тебя получилось, и как тебе хочется, ок?
Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 16, 2012, 12:51 объединение работает, НО тогда исчезают записи объедененных ячеек, а это мне не надо
Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 16, 2012, 13:55 Нарисуй что ты хочешь и что у тебя получается сейчас (т.е. красной жирной линией обведи то, что хочешь убрать). Тогда мы возможно поймём тебя.
Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 16, 2012, 14:15 Нарисуй что ты хочешь и что у тебя получается сейчас (т.е. красной жирной линией обведи то, что хочешь убрать). Тогда мы возможно поймём тебя. да тут просто вот есть срока таблицы|name|date|bla-bla|data| нужно убрать при наведении курсором границы ячеек(сделать одну ячейку), сделал Код: void MainWindow::on_tableWidget_entered(const QModelIndex &index) |name| остальное исчезает. или можно еще сделать так, что при наведении курсором, ячейки не выделялись Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 16, 2012, 14:29 setShowGrid ( bool show )?
Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 16, 2012, 14:42 setShowGrid ( bool show )? да это работает скрывает секу, но при наведении на строку, всеравно видно границы ячеек.Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 16, 2012, 15:37 Какие тебе границы видны блин )
делаешь скриншот мляха муха, и обводишь границы, которые у тебя видны. Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 17, 2012, 07:22 Какие тебе границы видны блин ) делаешь скриншот мляха муха, и обводишь границы, которые у тебя видны. ааааа, вот скрин, видете там 4 ячейки, между ними видны границы разделения, но их не надо чтоб было видно, понимаете? setSpan не помогает, вернее помогает, но тогда при выделении запись остается только в первой ячейки, понимаете? как еще подробнее можно объяснить=) Может стилями как-то можно это дело исправить? Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 17, 2012, 08:43 Зафиг тебе тогда 4 ячейки?
Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 17, 2012, 08:53 Зафиг тебе тогда 4 ячейки? ну как зафиг, у меня 4 колонки, каждая содержит свою информацию, просто визуально это должно быть как строка с одной колонкой, или предлагаете создать одну колонку и в ней все данные писать, да это будет бред Название: Re: table ячейки строки в виде одной ячейки Отправлено: Bepec от Январь 17, 2012, 08:59 Помоему ты сейчас фигней страдаешь :D
У тебя итак есть единая строка. Хочешь визуально хорошо - создавай свою собственную модель-view, делегат и прочая. Название: Re: table ячейки строки в виде одной ячейки Отправлено: semantic от Январь 17, 2012, 09:06 Помоему ты сейчас фигней страдаешь :D У тебя итак есть единая строка. Хочешь визуально хорошо - создавай свою собственную модель-view, делегат и прочая. да уж нет не фигня, так надо. Свою модель создавать из одного каприза не хочется, в остальном tablewidget усраивает Название: Re: table ячейки строки в виде одной ячейки Отправлено: alexman от Январь 17, 2012, 09:22 Оставляй QTableWidget, но установи свой делегат. Попробуй у него метод
Код: void QItemDelegate::updateEditorGeometry ( QWidget * editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const [virtual] Название: Re: table ячейки строки в виде одной ячейки Отправлено: stima от Январь 17, 2012, 15:30 Код: Q*View::item { border: none; } |