Ich bin noch neu in der Verwendung von Widget Toolkits, aber ich denke wirklich, das sollte funktionieren. Ich habe diesen Code von developer.gnome.org kopiert und der Klasse Buttons ein eigenes Objekt (button2) hinzugefügt, aber nur das Original m_button wird im Fenster angezeigt. Der Inhalt buttons.h:Kann in gtkmm nicht mehrere Schaltflächen zum Fenster hinzufügen?
#ifndef GTKMM_EXAMPLE_BUTTONS_H
#define GTKMM_EXAMPLE_BUTTONS_H
#include <gtkmm/window.h>
#include <gtkmm/button.h>
class Buttons : public Gtk::Window
{
public:
Buttons()
{
m_button.add_pixlabel("info.xpm", "hi");
button2.add_pixlabel("info.xpm", "hello");
set_title("Pixmap'd buttons!");
set_border_width(10);
m_button.signal_clicked().connect(sigc::mem_fun(*this,
&Buttons::on_button_clicked));
add(button2);
add(m_button);
show_all_children();
}
virtual ~Buttons()
{
}
protected:
//Signal handlers:
void on_button_clicked()
{
}
//Child widgets:
Gtk::Button button2;
Gtk::Button m_button;
};
#endif //GTKMM_EXAMPLE_BUTTONS_H
Inhalt main.cpp:
#include "buttons.h"
#include <gtkmm/application.h>
int main(int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app =
Gtk::Application::create(argc, argv,
"org.gtkmm.examples.base");
Buttons buttons;
return app->run(buttons);
}
Dank, das funktioniert. – Vincent
Dies ist die richtige Antwort, da Widgets nicht direkt in ein Fenster eingefügt werden sollen. Wenn Sie zwei Widgets hinzufügen, weiß ich nicht, was passiert, aber ich denke, Ihre Tasten wurden möglicherweise übereinander gestapelt. Verwenden Sie immer Boxen für das Widget-Layout. – oldtechaa
Richtig, ein GtkWindow kann nur ein Kind halten. (Unterklassen von GtkBin können nur ein Kind enthalten.) Verwenden Sie die Layout-Widgets wie GtkBox und GtkGrid, um mehrere Widgets zu erstellen. – andlabs