Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Violetta от Ноября 10, 2008, 18:43



Название: Как в таблице сделать последние строку и столбец не ReadOnly
Отправлено: Violetta от Ноября 10, 2008, 18:43
Здравствуйте, помогите пожалуйста с таблицей, желательно :-[, примером кода.
 Есть MyTable : public QTable(....), в ней например, 15 строк и 10 столбцов, последняя строка и последний столбец (ComboBox).
     Нужно сделать так чтобы, все строки и столбцы в таблице были ReadOnly, кроме последних (которые ComboBox).
    Пыталась вставить цикл (oт 0 до Last-1) по строкам и столбцам в которых   setColumnReadOnly( iCol, TRUE ) и setRowReadOnly( iRow, TRUE ),
    а затем написать setColumnReadOnly(LastCol, FALSE) и setRowReadOnly(LastRow, FALSE), не помогло, они не работают совместно
   (одна  заменяет действие другой?!)
Sorry, забыла указать верия Qt3

Спасибо огромное, все получилось :D благодаря Вашей подсказке!



Название: Re: Как в таблице сделать последние строку и столбец не ReadOnly
Отправлено: spirit от Ноября 10, 2008, 19:13
а какая версия кьюти? если 4.х.х , то в делегате это сделать довольно просто: в методе createEditor делегата проверять текущий номер строки посредством передаваемого QModelIndex и, если, строка не равна последней, возвращаем 0 или создаем QComboBox противном случае.


Название: Re: Как в таблице сделать последние строку и столбец не ReadOnly
Отправлено: Вячеслав от Ноября 11, 2008, 09:13
Код:
void Q3Table::setRowReadOnly ( int row, bool ro )   [virtual slot]
If ro is true, row row is set to be read-only; otherwise the row is set to be editable.
Whether a cell in this row is editable or read-only depends on the cell's EditType, and this setting.

Трояк однако ;)
 Ну я бы сюда рыл ... кажись на заре использования qt так и делал
Код:
Q3TableItem * Q3Table::item ( int row, int col ) const   [virtual]
Returns the Q3TableItem representing the contents of the cell at row, col.
If row or col are out of range or no content has been set for this cell, item() returns 0.
If you don't use Q3TableItems you may need to reimplement this function: see the notes on large tables.

void Q3TableItem::setEnabled ( bool b )   [virtual]
If b is true, the table item is enabled; if b is false the table item is disabled.
A disabled item doesn't respond to user interaction.
Но могу ошибаться .....