Eingefärbte Comboboxentry



  • Ich habe eine ComboboxEntry die bei einer falschen eingabe rot werden sollte... nun kann ich das ja mit modify_bg oder modify_base machen...
    Nun ich habe alle Statusse und mit bg und base versucht... aber da wird nix rot. Hat das von euch schon mal einer gemacht, wie geht das?


  • Mod

    Kann ich jetzt überhaupt nichts mit anfangen...
    Welches Framework verwendest du?



  • Entweder verwendet er GTK+ oder gtkmm.

    Zeig mal deinen Code, damit ich's mir ansehen kann.

    MfG

    GPC



  • Ja stimmt, hab ganz vergessen dass es hier nicht um GTK geht, war so in das Problem vertieft...

    Ich verwende Glademm also mit Gtkmm 😉

    Gtk::Box* boxLeft;
    xml_interface->get_widget("general_comboboxEntryText_holder_left", boxLeft);
    Gtk::ComboBoxEntryText* comboboxLeft = new Gtk::ComboBoxEntryText();
    boxLeft->pack_start(*comboboxLeft, true, true);
    boxLeft->show_all_children(true);
    
    comboboxRight->signal_changed().connect( sigc::mem_fun(*this, &UIConMgtGeneralTab::right_on_change) );
    
    void UIConMgtGeneralTab::left_on_change(){
        list<string>* aliases;
        string host;
        try{
            std::cout << "LEFT IS VALID\t" << host << std::endl;
        catch(std::invalid_argument ia){ 
            Gdk::Color red("red");
            comboboxLeft->modify_base(Gtk::STATE_NORMAL, red);
            comboboxLeft->modify_base(Gtk::STATE_ACTIVE , red);
            comboboxLeft->modify_base(Gtk::STATE_PRELIGHT, red);
            comboboxLeft->modify_base(Gtk::STATE_SELECTED, red);
            comboboxLeft->modify_base(Gtk::STATE_INSENSITIVE, red);
            comboboxLeft->modify_bg(Gtk::STATE_NORMAL, red);
            comboboxLeft->modify_bg(Gtk::STATE_ACTIVE , red);
            comboboxLeft->modify_bg(Gtk::STATE_PRELIGHT, red);
            comboboxLeft->modify_bg(Gtk::STATE_SELECTED, red);
            comboboxLeft->modify_bg(Gtk::STATE_INSENSITIVE, red);
        }
    }
    

    Habe gerade aut ComboBoxEntryText umgestellt... jetzt funktioniert das Signal nicht mehr richtig... dh. es kommt keins mehr wenn ich von hand Text eingebe, weisst du ev auch hier was ich noch machen muss?



  • Hm, ich kann's jetzt aus'm Stand raus nicht sagen, hab zu lange nichts mehr mit dem Widget gemacht. Außerdem fehlt mir grade der Compiler, um rumzuprobieren. Ich werd' heute Abend oder (wahrscheinlicher) morgen im Laufe des Tages was dazu posten.

    MfG

    GPC



  • Soweit ich das mitbekommen habe, kannst du die Hintergrundfarbe von nur ganz wenigen Widgets ändern, da die meisten quasi keinen Hintergrund haben, sondern den vom "höheren" Widget verwenden..

    du musst wahrscheinlich die ComboBox in eine EventBox reinpacken.. die kannst du nämlich einfärben..



  • Oh wie schön, endlich mal wieder gtkmm 😃

    Wie mein Vorredner schon sagte kannst du nicht von allen Widgets bestimmte Eigenschaften ändern.

    In deinem Falle hast du ja ein ComboBoxEntry = ComboBox + Entry 😉
    Und da du ja nur die Farbe deines Entry ändern willst, musst du dir nur dieses Entry greifen und die Farbe ändern:

    (in etwa so)

    Gtk::Entry *myEntry = comboboxentry.get_entry();
    myEntry->modify_base(comboboxentry.get_state(),Gdk::Color("red"));
    

    Mit get_state() sparst du dir auch das hier:

    boxi schrieb:

    comboboxLeft->modify_base(Gtk::STATE_NORMAL, red);
            comboboxLeft->modify_base(Gtk::STATE_ACTIVE , red);
            comboboxLeft->modify_base(Gtk::STATE_PRELIGHT, red);
            comboboxLeft->modify_base(Gtk::STATE_SELECTED, red);
            comboboxLeft->modify_base(Gtk::STATE_INSENSITIVE, red);
            comboboxLeft->modify_bg(Gtk::STATE_NORMAL, red);
            comboboxLeft->modify_bg(Gtk::STATE_ACTIVE , red);
            comboboxLeft->modify_bg(Gtk::STATE_PRELIGHT, red);
            comboboxLeft->modify_bg(Gtk::STATE_SELECTED, red);
            comboboxLeft->modify_bg(Gtk::STATE_INSENSITIVE, red);
    

Anmelden zum Antworten