Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: hello world на с++/gtkmm  (Прочитано 1882 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн johnny

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
hello world на с++/gtkmm
« : 09 Мая 2011, 14:11:30 »
Программа не хочет компилится

#include <gtkmm/button.h>
#include <gtkmm/main.h>
#include <gtkmm/window.h>
#include <iostream>

class HelloWorld : public Gtk::Window
{
public:
  HelloWorld();
  virtual ~HelloWorld();
protected:
  //Signal handlers:
  virtual void on_button_clicked();
  //Member widgets:
  Gtk::Button m_button;
};

HelloWorld::HelloWorld()
:  m_button("Hello World")   // creates a new button with the label "Hello World".
{
  // Sets the border width of the window.
  set_border_width(10);
  // When the button receives the "clicked" signal, it will call the
  // hello() method. The hello() method is defined below.
  m_button.signal_clicked().connect(SigC::slot(this, &HelloWorld::on_button_clicked));
  // This packs the button into the Window (a container).
  add(m_button);
  // The final step is to display this newly created widget...
  m_button.show();
}

HelloWorld::~HelloWorld
{
}

void HelloWorld::on_button_clicked()
{
  std::cout << "Hello World" << std::endl;
}
int main (int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);
  HelloWorld helloworld;
  kit.run(helloworld); //Shows the window and returns when it is closed.
  return 0;
}

ubuntu@ubuntu-machine:~/projects/gtkmm$ g++ hello.cpp -o hello
hello.cpp:1:26: fatal error: gtkmm/button.h: Нет такого файла или каталога
compilation terminated.

Кто виноват и что делать?
libgtkmm-2.4-dev установлен

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #1 : 09 Мая 2011, 15:32:44 »
в консоле: whereis button.h
а после чего вставляешь путь в инклюд.

и еще попробуй поставь все пакеты libgtkmm и поставь нетбинс. у меня твоя прога поехала.

Оффлайн Мангуст

  • Любитель
  • *
  • Сообщений: 98
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #2 : 09 Мая 2011, 17:05:26 »
Во-первых, надо установить libgtkmm-2.4.dev (ОК - не заметил сразу).
Во-вторых, надо компилить так: g++ `pkg-config --cflags --libs gtkmm-2.4` hello.cpp -o hello
А в-третьих твой пример все равно работать не будет. (Взят из устаревшего туториала  - SigC::slot сейчас не используется, кажется).

Оффлайн johnny

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #3 : 09 Мая 2011, 19:02:33 »
ок. устаревшего так устаревшего.

подскажите пожалуйста новый можно на английском. А то я они книжки по куте видел, хочется без куте как то для начала попроще так как до нее писали научится.

andrey_p

  • Гость
Re: hello world на с++/gtkmm
« Ответ #4 : 10 Мая 2011, 07:03:06 »
Насколько я понимаю, gtkmm2.4 - это переходный релиз на gtkmm3.0 Поэтому отсюда должно подойти: http://developer.gnome.org/gtkmm-tutorial/3.0/index.html.en
« Последнее редактирование: 10 Мая 2011, 17:05:21 от andrey_p »

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #5 : 10 Мая 2011, 17:01:53 »
на мой взгляд Qt попроще будет, хотя бы потому, что не нашел толковых учебников по нему. да и для qt есть собственная IDE, которая значительно упрощает все создание приложений, плюс ставиться напрямую из репозитариев (через синаптик) и сама выставляет все зависимости при установке

Оффлайн ierofant

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #6 : 11 Мая 2011, 10:49:55 »
g++ `pkg-config --cflags --libs gtkmm-2.4` hello.cpp -o hello
И всё.

andrey_p

  • Гость
Re: hello world на с++/gtkmm
« Ответ #7 : 11 Мая 2011, 11:02:18 »
Цитировать
И все.
Угу... Почему бы для начала не попробовать самому?  ???

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #8 : 11 Мая 2011, 13:50:21 »
g++ `pkg-config --cflags --libs gtkmm-2.4` hello.cpp -o hello

прошу прощения, но разве не надо полный путь к библиотекам писать? и потом помоему ключ -l надо использовать... хотя я могу ошибаться

andrey_p

  • Гость
Re: hello world на с++/gtkmm
« Ответ #9 : 11 Мая 2011, 14:50:01 »
Не нужно. pkg-config делает как раз это. Проблема в том, что не компилируется из-за SigC::slot. Писали, что пример устаревший.

Оффлайн ierofant

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: hello world на с++/gtkmm
« Ответ #10 : 11 Мая 2011, 18:48:05 »
Цитировать
Угу... Почему бы для начала не попробовать самому?  ???
У меня уже в течении двух лет так всё работает. А-то и больше.

Пользователь решил продолжить мысль 11 Мая 2011, 18:52:53:
А  
m_button.signal_clicked().connect(SigC::slot(this, &HelloWorld::on_button_clicked));
должно быть:
m_button.signal_clicked().connect(sigc::mem_fun (*this, &HelloWorld::on_button_clicked));
« Последнее редактирование: 11 Мая 2011, 18:53:50 от ierofant »

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.