微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 gtkmm 4 中将我的 Gtk::Window 移动到屏幕上的特定位置

如何解决如何在 gtkmm 4 中将我的 Gtk::Window 移动到屏幕上的特定位置

我继承了 Gtk::Window 并且我想将它移动到屏幕上的某个位置,但是我找不到任何方法来做到这一点。 Gtk::Window::move 在 Gtk4 中被删除了吗?如果是,我该如何移动我的窗口?
我目前在我的窗口类的构造函数中有这个:

this->set_title(_("Screenshot"));
// this is for getting the size of the screen,and calculating the center position
Glib::RefPtr<Glib::ObjectBase> first_monitor = Gdk::display::get_default()->get_monitors()->get_object(0);
Gdk::Rectangle rect;
first_monitor->get_rectangle(rect);
int posx = (rect.get_width() - this->get_width()) / 2;
this->move(posx,-1)
this->show();

它在编译时给我以下错误

src/prefswindow.cpp: In constructor ‘PrefsWindow::PrefsWindow()’:
src/prefswindow.cpp:7:17: error: ‘using element_type = class Glib::ObjectBase {aka class Glib::ObjectBase}’ has no member named ‘get_rectangle’
  first_monitor->get_rectangle(rect);
                 ^~~~~~~~~~~~~
src/prefswindow.cpp:9:8: error: ‘class PrefsWindow’ has no member named ‘move’; did you mean ‘Role’?
  this->move(posx,-1)
        ^~~~
        Role

PrefsWindow 类继承自 Gtk::Window。
提前致谢!

解决方法

看起来 GTK 继续下放。请参阅 How to center GtkWindows in gtk4?,答案似乎是“不可能,gtk_window_set_position() API 已被删除”(由 GTK 核心开发人员确认)。并且该线程中的评论似乎暗示 GTK 正朝着删除与窗口管理相关的所有内容以及与屏幕相关的任何其他内容的方向发展,而不是删除应用程序窗口的内部细节。

所以,根据我现在的理解,您有以下选择:

  • 使用一些特定于平台的方式来移动窗口
  • 切换小部件工具包(例如 Qt 或旧版本的 GTK+)
  • 放弃移动窗口的想法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。