Ich versuche ein Programm in gtkmm zu schreiben, aber die Schaltflächen werden nicht angezeigt. Ich habe alles gemacht, was ich weiß, um diese Knöpfe zum Vorschein zu bringen, aber nichts hat funktioniert. Ich habe sogar die "show all" -Methoden in die Dateien main und win_home.cpp eingefügt, aber es passiert immer noch nichts. Das Programm geht jedoch durch den Code, da die Cout-Anweisungen alle gedruckt werden. Hat jemand eine Idee, warum diese Tasten nicht angezeigt werden?Programm in gtkmm zeigt keine Schaltflächen
main.cpp:
#include <gtkmm.h>
#include <iostream>
#include "win_home.h"
int main(int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "com.InIT.InITPortal");
std::cout << "Creating Portal Window" << std::endl;
HomeGUI win_home;
win_home.set_default_size(600,400);
win_home.set_title("St. George InIT Home");
return app->run(win_home);
}
win_home.cpp:
#include "win_home.h"
HomeGUI::HomeGUI()
{
//build interface/gui
this->buildInterface();
//show_all_children();
//register Handlers
//this->registerHandlers();
}
HomeGUI::~HomeGUI()
{
}
void HomeGUI::buildInterface()
{
std::cout << "Building Portal Interface" << std::endl;
m_portal_rowbox = Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 5);
add(m_portal_rowbox);
Gtk::Button m_pia_button = Gtk::Button("Printer Install Assistant");
m_portal_rowbox.pack_start(m_pia_button, false, false, 0);
m_pia_button.show();
Gtk::Button m_inventory_button = Gtk::Button("Inventory");
m_inventory_button.show();
m_portal_rowbox.pack_start(m_inventory_button, false, false, 0);
m_inventory_button.show();
//add(m_portal_rowbox);
//m_portal_rowbox.show_all();
m_portal_rowbox.show();
this->show_all_children();
std::cout << "Completed Portal Interface" << std::endl;
return;
}
void HomeGUI::registerHandlers()
{
}
Leider habe ich keine Erfahrung in C++ (ich benutze Python). Egal, fügst du deine GtkBox dem Fenster hinzu? Das hat mich in der Vergangenheit gestolpert, wo ein "Widget" nicht zum übergeordneten Widget hinzugefügt wurde. – theGtknerd
@theGtknerd das ist die 'add (m_portal_rowbox);' Zeile. – andlabs
'Gtk :: Button x = Gtk :: Button (' sieht mir verdächtig. Was passiert, wenn Sie diese mit 'Gtk :: Button x (', und tun Sie das gleiche für die GtkBox? – andlabs