gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:03:00 26 4
gpt4 key购买 nike

我将 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+)
  • 放弃移动窗口的想法。

关于c++ - 如何将我的 Gtk::Window 移动到 gtkmm 4 屏幕上的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65508569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com