Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Fregloin от Февраль 18, 2013, 17:59



Название: QTableWidget + свои делегаты = как задать колонку на readOnly?
Отправлено: Fregloin от Февраль 18, 2013, 17:59
Привет. Есть таблица, в которой три колонки. В первой вывожу QCheckBox, во второй просто текст, в третей стоит делегат, который предоставляет QComboBox в режиме редактирования ячейки.
Суть в том, что вторую колонку (там где текст) нужно отображать только на чтение. Так как EditTriggers установлены. Если их убрать, то делегат в третьей колонке не работает.


Название: Re: QTableWidget + свои делегаты = как задать колонку на readOnly?
Отправлено: GreatSnake от Февраль 18, 2013, 18:06
Перегрузи QStyledItemDelegate::createEditor() который возвращает 0. Этот делегат установи для 2-й колонки.


Название: Re: QTableWidget + свои делегаты = как задать колонку на readOnly?
Отправлено: gil9red от Февраль 19, 2013, 07:26
Делегат:
Код:
class ReadDelegate: public QItemDelegate
{
public:
    inline ReadDelegate(QObject * parent = 0):
        QItemDelegate(parent)
    {
    }

    inline QWidget *createEditor(QWidget*,
                                 const QStyleOptionViewItem&,
                                 const QModelIndex&) const
    {
        return 0;
    }
};


Название: Re: QTableWidget + свои делегаты = как задать колонку на readOnly?
Отправлено: GreatSnake от Февраль 19, 2013, 07:52
Ну вот, пришел gil9red и убил все бонусы QStyledItemDelegate.


Название: Re: QTableWidget + свои делегаты = как задать колонку на readOnly?
Отправлено: Fregloin от Февраль 19, 2013, 13:27
честно говоря так и удмал :)
а вот второй вопрос, установил я делегат для первой колонки, в режиме редакторивания там чекбокс, а при отображение просто выводит текст "Да/Нет" в заивисимости от установленного значения.
Дело в том, что при появлении чекбокса при редактировании, под ним рисуется текст предыдущего значения. Как это побороть?