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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: table ячейки строки в виде одной ячейки  (Прочитано 13164 раз)
semantic
Гость
« : Январь 13, 2012, 08:21 »

как при наведении курсором на ячейку таблицы, выделять строку целиком, т.е. нужно визуально все ячейки, представлять как одну.
« Последнее редактирование: Январь 16, 2012, 13:30 от semantic » Записан
alexman
Гость
« Ответ #1 : Январь 13, 2012, 09:19 »

Можно отлавливать движение мыши, определять номер строки, void QTableView::selectRow ( int row ) [slot].
Записан
Bepec
Гость
« Ответ #2 : Январь 13, 2012, 09:25 »

Отлавливать наведение на ячейку.
Или использовать CSS, там есть данный функционал.

Свойство selection mode позволяет выделять целиком всю строку (прорисовка остаётся та же, но выделение идёт на строку)

PS мб я не понял вопроса, ты хочешь просто выделять строку целиком, или же ты хочешь перерисовывать все ячейки в 1 строку, без разграничителей?
Записан
semantic
Гость
« Ответ #3 : Январь 13, 2012, 09:29 »

Отлавливать наведение на ячейку.
Или использовать CSS, там есть данный функционал.

Свойство selection mode позволяет выделять целиком всю строку (прорисовка остаётся та же, но выделение идёт на строку)

PS мб я не понял вопроса, ты хочешь просто выделять строку целиком, или же ты хочешь перерисовывать все ячейки в 1 строку, без разграничителей?

да да, нужно без ограничения делать, но к примеру при двойном клике на строку редактировать первую ячейку строки, во как нужно. такой функционал наблюдается в TC(командер)
Записан
alexman
Гость
« Ответ #4 : Январь 13, 2012, 09:40 »

Не знаю можно ли разбить как то ячейку в таблице, но объединить можно... поколдуй с void QTableView::setSpan ( int row, int column, int rowSpanCount, int columnSpanCount ).

Еще можно более экзотически: при наведении на строку поверх таблицы рисовать виджет размеров строки (соблюдая стиль ...) ну и там нужный текст.

Цитировать
как при наведении курсором на ячейку таблицы, выделять строку целиком, т.е. нужно визуально все ячейки, представлять как одну.
Не расскажешь зачем это надо?
Записан
Bepec
Гость
« Ответ #5 : Январь 13, 2012, 09:43 »

Тогда устанавливай свойство selection behavior. ( в 1 сообщении ошипся.)

Будет выделяться вся строка. А вот чтобы редактировать только 1 ячейку, нужен будет делеган с редактором.

table_->setShowGrid(false) скроет границы между ячейками.
« Последнее редактирование: Январь 13, 2012, 09:46 от Bepec » Записан
semantic
Гость
« Ответ #6 : Январь 13, 2012, 10:59 »

Тогда устанавливай свойство selection behavior. ( в 1 сообщении ошипся.)
да это при клике выделяется строка, но нужно еще и при наведении выделять, с mouse ничего не нашел
Цитировать
Будет выделяться вся строка. А вот чтобы редактировать только 1 ячейку, нужен будет делеган с редактором.
можно тут подробнее?
Цитировать
table_->setShowGrid(false) скроет границы между ячейками.
и опять таки, при выделении строки границы видны.
Записан
semantic
Гость
« Ответ #7 : Январь 13, 2012, 11:31 »

с выделение разобрался. on_tableWidget_cellEntered

другие вопросы в силе
Записан
Bepec
Гость
« Ответ #8 : Январь 13, 2012, 12:21 »

Насчёт выделение - в поиск.
Насчёт делегата - в поиск (наводка
Код:
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex &  index ) const;
)

Темы поднимались не раз и там всё разжёвано.
Записан
semantic
Гость
« Ответ #9 : Январь 13, 2012, 12:26 »

Насчёт выделение - в поиск.
Насчёт делегата - в поиск (наводка
Код:
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex &  index ) const;
)
Темы поднимались не раз и там всё разжёвано.

делегат нашел, пасиб на доводку.

а если нужно при двойном щелчке запретить редактирование ячейки, а допустим при нажатии на кнопку открыть доступ к редактированию, я так понимаю делегат запрещает полностью редактирование.
« Последнее редактирование: Январь 13, 2012, 12:28 от semantic » Записан
stima
Гость
« Ответ #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
Гость
« Ответ #11 : Январь 13, 2012, 12:41 »

Делегат есть всегда Улыбающийся Вызвать стандартный делегат тоже можно всегда Подмигивающий

Вызов редактора делегата производится по
Код:
EditTriggers
- там уже можно определить реагировать на чтото, или игнорить.

PS а вообще делегат такая прекрасная штука, что подстраивается легко ^^
Записан
semantic
Гость
« Ответ #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
Гость
« Ответ #13 : Январь 13, 2012, 13:13 »

Вопрос какую кнопку вы хотите? Имеете в виду любую кнопку на клавиатуре(X,Z,Y)? Или же кнопку/галку/виджет которую поставите на форму?
Записан
semantic
Гость
« Ответ #14 : Январь 13, 2012, 13:17 »

Вопрос какую кнопку вы хотите? Имеете в виду любую кнопку на клавиатуре(X,Z,Y)? Или же кнопку/галку/виджет которую поставите на форму?
и то и другое, и с формы редактировать и при помощи горячих клавиш.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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