[gtkmm] Beim Klicken in ein Gtk::Entry Control alles markieren
-
Hali halo
,
weiß jemand, wie ich es anstellen muss, dass, bei einem Klick in ein Gtk::Entry-Steuerelement, der gesamte Text markiert wird? Alles markieren kann man ja mit:
m_ebxEdit1.select_region(0, -1);
Allerdings bekomme ich irgendwie keinen passenden Signal-Handler installiert; könnte mir da jemand helfen?
Also damit klappt es nicht:
m_ebxEdit1.signal_activate().connect(sigc::bind<ControlID,Gtk::Entry*> (sigc::mem_fun(*this, &CMainWnd::OnEditBoxFocus), EBX_EDIT1, &m_ebxEdit1));
Die Methode "OnEditBoxFocus" wird nämlich nicht aufgerufen, wenn man in das Edit klickt
.
Schonmal thx
!
-
probiers mal mit "signal_focus"
-
Hi, erstmal danke für deine Antwort!
Also leider funktioniert das nicht, hier mal mein Code(teil):
Der Header:class CMainWnd : public Gtk::Window { private: enum ControlID { EBX_DEMO }; // ... Gtk::Entry m_ebxDemo; bool OnEditBoxFocus(Gtk::DirectionType DirType, ControlID Id, Gtk::Entry* pEbx); public: CMainWnd(void); ~CMainWnd(void){} };
Die Quellcodedatei:
CMainWnd::CMainWnd(void) : m_tbCtrls(4, 3, true) { // Set the default size of the main window: set_default_size(400, 300); m_ebxDemo.signal_focus().connect(sigc::bind<ControlID,Gtk::Entry*>(sigc::mem_fun(*this, &CMainWnd::OnEditBoxFocus), EBX_DEMO, &m_ebxDemo)); // ... m_tbCtrls.attach(m_ebxDemo, 0, 1, 3, 4); // Add the Table-Box to the parent window: add(m_tbCtrls); // Show all children controls on the main window: show_all_children(); } bool CMainWnd::OnEditBoxFocus(Gtk::DirectionType DirType, ControlID Id, Gtk::Entry* pEbx) { Gtk::MessageDialog MsgDlg("Control focused: \"" + (!pEbx ? "n/a" : pEbx->get_text()) + "\"!"); MsgDlg.run(); return (false); }
Eigentlich bräuchte ich das Ganze auch für ein Gtk::TextView Steuerelement...da gibt es allerdings die Methode select_region nicht
. Die Message-Box (Gtk::MessageDialog) wird nie aufgerufen
.
Nochmals vielen Dank!
Grüße Q
-
*push*
- Hilfe?
-
Ich werd mir das mal bei Gelegenheit anschauen und morgen posten
-
Hatte die letzten Tage wenig Zeit, aber so wie es aussieht, macht gtkmm wieder blödsinn
Habe alles erdenkliche probiert und keine Möglichkeit gefunden bei Klick in ein Entry/TextView auf den Klick zu reagieren.
Zum markieren: grab_focus() reicht aus
-
Okay, dank Dir!
Hm das heßt, das Framework kann sowas nicht
?...oha son scheiß, war vllt. doch die falsche Wahl, dachte gtkmm hätte's drauf, okay trotzdem danke an alle!
-
Wenn ich wieder Zeit/Lust finde, werde ich mir das nochmal anschauen.
Frag doch mal in der gtkmm-Mailingliste bzw im NabbleBoard, da die Post dort zur Mailingliste gehen: http://www.nabble.com/Gtkmm-f1344.html