LINUX.ORG.RU

Сообщения yukik

 

Нарисовать закругленные углы в окне с использованием GTK-3

Форум — Development

Здравствуйте, форумчане!

Столкнулся со следующей проблемой..
есть код на С++ :

int main (int argc, char *argv[])
{
  auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

  Gtk::Window window;
  window.set_default_size(200, 200);

  Glib::RefPtr<Gtk::CssProvider> css_provider = Gtk::CssProvider::create();
  Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();

  try
  {
      css_provider->load_from_path("styles.css");
  }
  catch (/*Exeption &e*/...)
  {
      std::cout << "exeption " << std::endl;
  }

  styleContext->add_provider_for_screen(Gdk::Screen::get_default(), css_provider, GTK_STYLE_PROVIDER_PRIORITY_USER);

  return app->run(window);
}

и СSS код (styles.css файл)

GtkWindow
{
  border: 1px solid black;
  background: none;
  background-color : red;
  border-radius: 20px;
}

сборка:

g++ `pkg-config --cflags gtkmm-3.0` -o exampl main.cc `pkg-config --libs gtkmm-3.0`

в результате на выходе получаем окно с закругленными углами, но вместо прозрачности у нас черные углы
https://i.stack.imgur.com/5OvV1.png

После долгих поисков, оказалось, что надо включить фичу, которая называется Client Side Decoration

export GTK_CSD=1

сразу после этого окно запустилось как и должно быть: https://imgur.com/hJxJels

Но! на всех других машинах с убунту это решение не работает! там все еще черные углы! а еще почему-то вместо «GtkWindow» в СSS файле надо писать просто «window»

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

Перемещено Pinkbyte из general

 , , ,

yukik
()

RSS подписка на новые темы