gtk 窗口坐标转换为屏幕坐标
时间: 2023-10-21 21:07:31 浏览: 44
在 GTK 中,可以使用 `gtk_window_get_position()` 函数获取窗口相对于屏幕左上角的坐标。如果你想将窗口中的某个控件的坐标转换为屏幕坐标,可以使用 `gtk_widget_translate_coordinates()` 函数。这个函数需要传入两个参数:源 widget 和目标 widget。如果你想将源 widget 的坐标转换为屏幕坐标,则将目标 widget 设为 `NULL`。示例代码如下:
```c
GtkWidget *widget; // 源 widget
gint x, y; // 源 widget 相对于窗口左上角的坐标
gtk_widget_translate_coordinates(widget, GTK_WINDOW(window), x, y, &x, &y);
```
在这个例子中,`window` 是窗口的指针。`x` 和 `y` 是源 widget 相对于窗口左上角的坐标,`&x` 和 `&y` 则是输出参数,存储转换后的屏幕坐标。
相关问题
linux QT嵌入GTK窗口时,指定gtk父窗口
在将GTK窗口嵌入到QT应用程序中时,可以使用`gtk_widget_set_parent()`函数来指定GTK父窗口。以下是一个简单的示例代码:
```c++
#include <gtk/gtk.h>
#include <QApplication>
#include <QVBoxLayout>
#include <QX11EmbedContainer>
#include <QWidget>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
// 创建一个QT主窗口
QWidget window;
// 创建一个QX11EmbedContainer,用于嵌入GTK窗口
QX11EmbedContainer container(&window);
// 获取GTK父窗口
GtkWidget* gtkParentWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
// 将GTK父窗口指定为QX11EmbedContainer的父窗口
gtk_widget_set_parent(gtkParentWindow, container.winId());
// 创建一个GTK按钮并将其添加到GTK父窗口中
GtkWidget* gtkButton = gtk_button_new_with_label("GTK Button");
gtk_container_add(GTK_CONTAINER(gtkParentWindow), gtkButton);
// 将QX11EmbedContainer添加到QT布局中
QVBoxLayout layout(&window);
layout.addWidget(&container);
window.show();
return app.exec();
}
```
上述示例代码创建了一个QT主窗口,并在该窗口中嵌入了一个GTK按钮。`gtk_widget_set_parent()`函数用于指定GTK父窗口,将GTK按钮添加到该父窗口中。通过使用QX11EmbedContainer,可以在QT应用程序中嵌入GTK窗口。
C语言gtk获取当前屏幕的大小
在C语言中,使用Gtk库可以获取当前屏幕的大小。具体实现可以参考以下代码:
```c
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GdkScreen* screen = gdk_screen_get_default();
int width = gdk_screen_get_width(screen);
int height = gdk_screen_get_height(screen);
g_print("Screen size: %d x %d\n", width, height);
return 0;
}
```
上述代码中,我们首先通过gtk_init()函数初始化GTK库。然后使用gdk_screen_get_default()函数获取默认屏幕对象。接着,我们可以通过gdk_screen_get_width()和gdk_screen_get_height()函数获取屏幕的宽度和高度。
最后,我们使用g_print()函数将屏幕大小输出到控制台。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/octet-stream](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)