Ich versuche, eine Verbindung zum GTKMM configure_event-Signal herzustellen. Andere Signale wie property_is_active und delete_event funktionieren gut.Verbindung zu GTKMM nicht möglich signal_configure_event
im folgenden Codebeispiel wird kompiliert und ausgeführt, aber wenn ich das Fenster mit der Maus verschiebe oder die Größe verändere, wird der "cout" nicht auf der Konsole angezeigt.
Ich bin verwirrt, was könnte falsch sein. Der Code folgt, wie die GTKMM-Dokumentation sagt, das gleiche Muster wie andere "Ereignisse", wie zum Beispiel das Drücken der Taste, was ich zuvor getan habe: Aktivieren Sie die MASKE des Ereignisses und verbinden Sie das Signal mit meinem Handler. Basierend auf einigen Sachen "google" zurückgegeben, habe ich sowohl das add_event (...) hier gezeigt, auch set_event (...) versucht, und enthalten eine "show()" entweder vor dem Add/Set-Aufruf, in einem bemühen, einige Hinweise in alten Tutorials (möglicherweise von GTK2) zu erfüllen. Es gibt noch andere Beiträge auf verschiedenen Foren darauf hindeutet, Menschen über diesen Punkt bekommen haben, wenn (meist andere Sprachen als C++.
(aktuelle Debian Linux, GTK 3)
Jede Hilfe wäre sehr dankbar.
#include <fstream>
#include <istream>
#include <ostream>
#include <iostream>
#include <gdkmm.h>
#include <gtkmm.h>
using namespace std;
class AdjunctWindow : public Gtk::Window {
public:
AdjunctWindow();
~AdjunctWindow();
bool on_configure_changed(GdkEventConfigure* configure_event);
};
AdjunctWindow::AdjunctWindow() {
add_events(Gdk::STRUCTURE_MASK);
signal_configure_event().connect(sigc::mem_fun(*this,
&AdjunctWindow::on_configure_changed));
}
AdjunctWindow::~AdjunctWindow(){
}
bool AdjunctWindow::on_configure_changed(GdkEventConfigure* configure_event) {
cout << "configure changed\n";
return false;
}
int main(int argc, char** argv) {
Gtk::Main kit(argc, argv);
Gtk::Main::run(*(new AdjunctWindow()));
}