crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Digit QTableWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
igor_bogomolov Дата 14.1.2010, 14:28
  setBackgroundRole задает цвет для всего виджета.

Используй следующие мотоды чтобы установить/получения item таблицы:
void QTableWidget::setItem ( int row, int column, QTableWidgetItem * item )
QTableWidgetItem * QTableWidget::item ( int row, int column ) const

для этих item и задавай цвет используя
Цитата
void QTableWidgetItem::setBackground ( const QBrush & brush )


Или же делай через делегат, что эффективнее.
Litkevich Yuriy Дата 14.1.2010, 14:18
 
Цитата(werwolf @ 14.1.2010, 17:06) *
то я закрашу всю таблицу, а мне нужно только одну ячейку ( i, j )
дак ты в делегате проверяй какая строка/колонка в данный момент обрабатывается, у модеьных индексов можно узнать номер строки/колонки
werwolf Дата 14.1.2010, 14:06
  Спасибо ! Я только начал разбирать пример SpinBoxDelegate, как появилось готовое решение, только вместо QIntValidator я использовал QDoubleValidator.
Но второй вопрос остается открытым, если брать setBackgroundRole ( QPalette::ColorRole ) , то я закрашу всю таблицу, а мне нужно только одну ячейку ( i, j ) либо все ячейки строки (это можно потом организовать в цикле, если есть возможность закрасить одну ячейку).
igor_bogomolov Дата 14.1.2010, 13:24
 
Цитата(werwolf @ 14.1.2010, 12:41) *
А можно немного поподробнее как это сделать?
Класс делегата можно написать примерно так
.h
class LineEditDelegate : public QItemDelegate
{
    Q_OBJECT
public:
   LineEditDelegate(QObject* parent = 0);

    QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;

    void setEditorData(QWidget* editor, const QModelIndex& index) const;
    void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const;

    void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const;
};
.cpp

LineEditDelegate::LineEditDelegate(QObject* parent)
    : QItemDelegate(parent)
{
}

QWidget* LineEditDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& /*option*/, const QModelIndex& index ) const
{
    Q_UNUSED(index);

    QLineEdit* lineEdit = new QLineEdit(parent);
    lineEdit->setValidator(new QIntValidator(0,100,lineEdit));
    return lineEdit;
}

void LineEditDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
{
    QLineEdit* lineEdit = qobject_cast<QLineEdit*>(editor);
    if (!lineEdit) return;

    lineEdit->setText(index.data(Qt::EditRole).toString());
}

void LineEditDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
{
    QLineEdit* lineEdit = qobject_cast<QLineEdit*>(editor);
    if (!lineEdit) return;

    model->setData(index, lineEdit->text());
}

void LineEditDelegate::updateEditorGeometry(QWidget* editor,
    const QStyleOptionViewItem& option, const QModelIndex& /* index */) const
{
    editor->setGeometry(option.rect);
}
Цитата(werwolf @ 14.1.2010, 12:41) *
появился еще один вопрос: как выделить и-ю строку(ячейку) другим цветом?
void QTableWidgetItem::setBackground ( const QBrush & brush )
Или же опять таки через делегат, перекрыв в нем paint


werwolf Дата 14.1.2010, 12:41
  А можно немного поподробнее как это сделать?
И появился еще один вопрос: как выделить и-ю строку(ячейку) другим цветом?
Litkevich Yuriy Дата 14.1.2010, 6:41
  Установить делегат, в котором для виджета редактора установить соответствующий QValidator
werwolf Дата 14.1.2010, 3:14
  Здравствуйте, подскажите как в QTableWidget сделать ограничение на ввод только цифр (во всех ячейках)?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 4.5.2024, 2:06