LINUX.ORG.RU

[C++] [gtkmm] Почему неправильно работает?


0

1

Показывается только текст, кнопки не видно.
Как это исправить?
gtkmm-2.4


#include <iostream>
#include <gtkmm.h>

using namespace std;

void button_clicked(){
   cout << «Hello!» << endl;
}

int main (int argc, char* argv[]){
   Gtk::Main toolkit(argc, argv);
   Gtk::Window window;
   window.set_title(«Hello programm»);
   window.set_border_width(10);
   Gtk::Label mylabel(«Button prints \„Hello!\“ to stdout»);
   window.add(mylabel);
   mylabel.show();
   Gtk::Button mybutton(«Hello!»);
   mybutton.signal_clicked().connect(sigc::ptr_fun(&button_clicked));
   window.add(mybutton);
   mybutton.show();
   toolkit.run(window);
   return 0;
}

Не туда кладёшь... Используй какой-нибудь HBox или VBox, в него добавляй уже кнопку и лэйбл :)

xterro ★★★★★ ()
Ответ на: комментарий от xterro

Спасибо, заюзал vbox, помогло.

#include <iostream>
#include <gtkmm.h>

using namespace std;

void button_clicked(){
   cout << «Hello!» << endl;
}

int main (int argc, char* argv[]){
   Gtk::Main toolkit(argc, argv);
   Gtk::Window window;
   Gtk::VBox mainbox;
   window.set_title(«Hello programm»);
   window.set_border_width(10);
   Gtk::Label mylabel(«Button prints \„Hello!\“ to stdout»);
   mainbox.pack_start(mylabel);
   mylabel.show();
   Gtk::Button mybutton(«Hello!»);
   mybutton.signal_clicked().connect(sigc::ptr_fun(&button_clicked));
   mainbox.pack_start(mybutton);
   mybutton.show();
   window.add(mainbox);
   mainbox.show();
   toolkit.run(window);
   return 0;
}

startApp ()

Пока не поздно, переходи на Qt.

Obey-Kun ★★★★★ ()

В каждом контейнере может быть только 1 виджет. Окно - контейнер, может принять 1 виджет, например вот vbox. А уже он является набором контейнеров для других виджетов.

hibou ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.