GtkTreeView备用行颜色

问题描述 投票:1回答:2

我无法设置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;
}

怎么了?我也尝试通过代码(注释行)设置样式类,但是没有改变。预先感谢您的帮助!

c++ css glade gtkmm
2个回答
0
投票

[使用GtkInspector,我发现CSS中没有行背景颜色的属性。如何以编程方式设置行背景色?


0
投票

如果要设置行的背景色,可以使用

© www.soinside.com 2019 - 2024. All rights reserved.