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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.0.1: Цвет ячеек в QAbstractTableModel  (Прочитано 9305 раз)
Agriop
Гость
« : Декабрь 06, 2005, 12:13 »

Пытаюсь сделать простейшую таблицу в Qt 4.0.1, мне нужно, чтобы ячейки в виде закрашивались определенным цветом, но они почему-то не закрашиваются Грустный

Причем класс QTableWidget устанавливает цвет ячеек тоже через data/BackgroundColorRole, и использует QTableView и у него ячейки без проблем закрашиваются, а через QAbstractTableModel/QTableView не получается Грустный

Код:

class MyTable : public QAbstractTableModel {
public:
MyTable(QObject* parent = 0);
int columnCount(const QModelIndex &parent) const;
int rowCount(const QModelIndex &parent) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
};

MyTable::MyTable(QObject* parent)
: QAbstractTableModel(parent) {
}

int MyTable::rowCount(const QModelIndex &parent = QModelIndex()) const {
return 30;
}

int MyTable::columnCount(const QModelIndex &parent = QModelIndex()) const {
return 30;
}

QVariant MyTable::data(const QModelIndex &index, int role) const {
if (role == Qt::DisplayRole)
return QVariant(2);    // some data
else if (role == Qt::BackgroundColorRole)
return QVariant(Qt::blue);

return QVariant();
}

int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyTable *model = new MyTable;
   
QTableView *table = new QTableView;
table->setModel(model);

table->show();
return app.exec();
}
Записан
Agriop
Гость
« Ответ #1 : Декабрь 06, 2005, 14:50 »

Все, понял свою ошибку - Qt::blue - целое значение, в data() нужно возвращать QVariant(QColor(Qt::blue))
Записан
nEoN
Гость
« Ответ #2 : Декабрь 06, 2005, 17:55 »

Кстати QVariant(..) писать не обязательно, можно просто return QColor(Qt::blue).
Помоему так нагляднее.
Записан
Agriop
Гость
« Ответ #3 : Декабрь 06, 2005, 23:36 »

Цитата: "nEoN"
Кстати QVariant(..) писать не обязательно, можно просто return QColor(Qt::blue).
Помоему так нагляднее.

Согласен, не знал, хотя теперь буду осторожнее работать с классом QVariant.

Еще мне нужно, чтобы горизонтальный заголовок таблицы был на три строки, причем с объединением ячеек, насколько я понимаю, это так просто не сделаешь.
Записан
nEoN
Гость
« Ответ #4 : Декабрь 07, 2005, 09:33 »

Цитата: "Agriop"

Еще мне нужно, чтобы горизонтальный заголовок таблицы был на три строки, причем с объединением ячеек, насколько я понимаю, это так просто не сделаешь.


Да, по простому это не сделаешь.
Как вариант можно унаследоваться от QHeaderView, реализовывать в нём "многострочность" и объединение ячеек заголовка. А потом tableView->setHorizontalHeader(...).
Записан
Agriop
Гость
« Ответ #5 : Декабрь 07, 2005, 12:16 »

Еще оказывается есть хитрый класс Q3Table.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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