Я пытаюсь написать программу в gtkmm, но кнопки не будут отображаться. Я сделал все, что знаю, чтобы показать эти кнопки, но ничего не работает. Я даже включил методы «показать все» в основном файле и в файле win_home.cpp, но все равно ничего не происходит. Тем не менее, программа выполняет код, поскольку все сообщения cout печатаются. Кто-нибудь знает, почему эти кнопки не появятся?Программа в gtkmm не будет показывать кнопки
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()
{
}
К сожалению, у меня нет опыта работы в C++ (я использую python). Все-таки вы добавляете свой GtkBox в окно? Это сбило меня с толку в прошлом, когда один «виджет» не был добавлен в родительский виджет. – theGtknerd
@theGtknerd - это строка 'add (m_portal_rowbox);'. – andlabs
'Gtk :: Button x = Gtk :: Button (' выглядит подозрительно для меня. Что произойдет, если вы замените их с помощью кнопки Gtk :: Button x (', и сделайте то же самое для GtkBox? – andlabs