首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GTK-3应用程序中使用‘border-radius’后,窗口的边角变黑而不是透明

在GTK-3应用程序中使用‘border-radius’后,窗口的边角变黑而不是透明
EN

Stack Overflow用户
提问于 2020-03-06 03:06:57
回答 2查看 678关注 0票数 0

我正在尝试创建具有圆角的GTK-3应用程序,并尝试使用CSS的'border-radius‘属性。但是边角会变黑。原因是什么?如何修复它?

以下是“main.cc”文件中的C++代码:

代码语言:javascript
复制
#include <gtkmm/application.h>
#include <iostream>
#include <gtkmm.h>

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);
}

下面是文件"styles.css“中的CSS代码:

代码语言:javascript
复制
window
{
  border: 1px solid black;
  background: none;
  background-color : red;
  border-radius: 20px;
}

使用编译

代码语言:javascript
复制
 g++ `pkg-config --cflags gtkmm-3.0` -o exampl main.cc `pkg-config --libs gtkmm-3.0`

我使用的是Ubuntu 18.04.3 LTS

这里的结果是:https://i.stack.imgur.com/5OvV1.png我希望角落应该是透明的,而不是黑色的!

求求你救命!

EN

回答 2

Stack Overflow用户

发布于 2020-03-09 18:54:36

屏幕截图的装饰是由窗口管理器绘制的:在应用程序级别,你不能做太多来改变这一点。因此,简短的答案是“不可能”。

无论如何,如果你使用的是client-side decorations,你可以绕过它。看看下面截图的边角:

我刚刚挑选了一个使用带有客户端装饰的GTK3的随机应用程序,并添加了以下CSS片段:

代码语言:javascript
复制
headerbar {
  border-radius: 0 10px 0 0;
}
window {
  border-radius: 0 0 30px 20px;
}
票数 1
EN

Stack Overflow用户

发布于 2020-03-06 03:50:50

在你的css中,你将边框设置为1px纯黑,它不应该是1px透明的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60552417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档