我正在尝试创建具有圆角的GTK-3应用程序,并尝试使用CSS的'border-radius‘属性。但是边角会变黑。原因是什么?如何修复它?
以下是“main.cc”文件中的C++代码:
#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代码:
window
{
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`我使用的是Ubuntu 18.04.3 LTS
这里的结果是:https://i.stack.imgur.com/5OvV1.png我希望角落应该是透明的,而不是黑色的!
求求你救命!
发布于 2020-03-09 18:54:36
屏幕截图的装饰是由窗口管理器绘制的:在应用程序级别,你不能做太多来改变这一点。因此,简短的答案是“不可能”。
无论如何,如果你使用的是client-side decorations,你可以绕过它。看看下面截图的边角:

我刚刚挑选了一个使用带有客户端装饰的GTK3的随机应用程序,并添加了以下CSS片段:
headerbar {
border-radius: 0 10px 0 0;
}
window {
border-radius: 0 0 30px 20px;
}发布于 2020-03-06 03:50:50
在你的css中,你将边框设置为1px纯黑,它不应该是1px透明的吗?
https://stackoverflow.com/questions/60552417
复制相似问题