Я не могу установить альтернативный цвет строки TreeView, я не знаю, почему не работает.
Это код
MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refGlade) :
Gtk::ApplicationWindow(cobject), refBuilder(refGlade){
Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
cssProvider->load_from_path("style.css");
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();
styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
const char* user = "user";
const char* passwd = "passwd";
const char* database = "dbname";
const char* dbhost = "192.168.1.5";
connection = mysql_init(NULL);
mysql_real_connect(connection, dbhost, user, passwd, database, 3307, NULL, 0);
refBuilder->get_widget("m_TreeView1", m_TreeView1);
m_refTreeModel = Gtk::ListStore::create(m_Columns);
m_TreeView1->set_model(m_refTreeModel);
/*Glib::RefPtr<Gtk::StyleContext> context = m_TreeView1->get_style_context();
context->add_class("treeview");
*/
Affitto* affitti = new Affitto(connection);
MYSQL_RES* res = affitti->getAll();
MYSQL_ROW riga;
Gtk::TreeModel::Row row;
while ((riga = mysql_fetch_row(res)))
{
row = *(m_refTreeModel->append());
row[m_Columns.m_col_inqid] = std::stoi(riga[0]);
row[m_Columns.m_col_cognomenome] = riga[1];
row[m_Columns.m_col_stabile] = riga[2];
row[m_Columns.m_col_mese] = std::stoi(riga[3]);
row[m_Columns.m_col_anno] = std::stoi(riga[4]);
row[m_Columns.m_col_posteggiopagato] = std::stod(riga[5]);
row[m_Columns.m_col_affittopagato] = std::stod(riga[6]);
row[m_Columns.m_col_riscaldamentopagato] = std::stod(riga[7]);
row[m_Columns.m_col_pagatoil] = riga[8];
row[m_Columns.m_col_stato] = riga[9];
row[m_Columns.m_col_osservazioni] = riga[10];
row[m_Columns.m_col_traslocato] = riga[11];
row[m_Columns.m_col_diversi] = std::stod(riga[12]);
row[m_Columns.m_col_affitto] = std::stod(riga[13]);
row[m_Columns.m_col_posteggio] = std::stod(riga[14]);
row[m_Columns.m_col_riscaldamento] = std::stod(riga[15]);
}
m_TreeView1->append_column("InqID", m_Columns.m_col_inqid);
m_TreeView1->append_column("Cognome e nome", m_Columns.m_col_cognomenome);
//m_TreeView1->get_column(1)->set_expand(true);
m_TreeView1->append_column("Stabile", m_Columns.m_col_stabile);
m_TreeView1->append_column("Mese", m_Columns.m_col_mese);
m_TreeView1->append_column("Anno", m_Columns.m_col_anno);
m_TreeView1->append_column("Posteggio pagato", m_Columns.m_col_posteggiopagato);
m_TreeView1->append_column("Affitto pagato", m_Columns.m_col_affittopagato);
m_TreeView1->append_column("Riscaldamento pagato", m_Columns.m_col_riscaldamentopagato);
m_TreeView1->append_column("Pagato il", m_Columns.m_col_pagatoil);
m_TreeView1->append_column("Stato", m_Columns.m_col_stato);
m_TreeView1->append_column("Osservazioni", m_Columns.m_col_osservazioni);
m_TreeView1->append_column("Traslocato", m_Columns.m_col_traslocato);
m_TreeView1->append_column("Diversi", m_Columns.m_col_diversi);
m_TreeView1->append_column("Affitto", m_Columns.m_col_affitto);
m_TreeView1->append_column("Posteggio", m_Columns.m_col_posteggio);
m_TreeView1->append_column("Riscaldamento", m_Columns.m_col_riscaldamento);
mysql_free_result(res);
mysql_close(connection);
}
И это правильно загруженный css. Я установил класс стиля TreeView (treeview) в файле поляны.
.treeview row:nth-child(even)
{
background-color: #ff0000;
}
.treeview row:nth-child(odd)
{
background-color: #000000;
}
Что случилось? Я тоже пытался установить класс стиля по коду (закомментированные строки), но не меняет. Заранее благодарим за помощь!
обновить
Ставлю обновленный код, в чем дело?
Gtk::CellRendererText* textRenderer = manage(new Gtk::CellRendererText());
textRenderer->property_editable() = false;
Gtk::TreeViewColumn *col = manage(new Gtk::TreeViewColumn("InqId", *textRenderer));
col->add_attribute(*textRenderer, "cell-background-rgba", m_Columns.m_col_inqid);
m_TreeView1->append_column(*col);
while ((riga = mysql_fetch_row(res)))
{
row = *(m_refTreeModel->append());
row[m_Columns.m_col_inqid] = std::stoi(riga[0]);
row[m_Columns.m_col_inqid] = Gdk::Color("#CCCCCC");
}
заранее спасибо!