qt widget 嵌套与弹出_Gtk widget 与 Qt Widget的相互嵌套
简述
gtk qt窗口的相互嵌套。主要是使用了Gtk中的socket跟plug的模式,与Qt中的QX11EmbedContainer。这是两个不同的UI库的相互嵌套的方法。google了下发现有个老哥写出来了,但是gtk嵌入到Qt的代码中是有点问题的,所以我改了改他的代码。最后终于完成了,毕竟我对gtk不太熟悉=。=代码很简单,这里就不做任何说明了。
代码
pro文件中添加
unix: CONFIG += link_pkgconfig
unix: PKGCONFIG += gtk+-2.0
代码
#include
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QX11EmbedContainer>
#include <QX11EmbedWidget>
#include
#define MAINWINDOW_IS_QT true
#define EMBEDDED_IS_QT false
void create_qt_embed(long id)
{
QX11EmbedWidget* plug = new QX11EmbedWidget;
plug->embedInto(id);
QPushButton* button = new QPushButton("My Label", plug);
plug->show();
}
void create_gtk_plug(long id)
{
// GtkWidget* plug = gtk_plug_new(id);
// gtk_widget_show(plug);
// GtkWidget* button = gtk_button_new_with_label("My Label");
// gtk_widget_show(button);
// GDK_WINDOW_XID(button);
// gdk_x11_window_get_xid()
// gtk_container_add(GTK_CONTAINER(plug), button);
}
int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
QApplication app(argc, argv);
if (MAINWINDOW_IS_QT)
{
QMainWindow* main_window = new QMainWindow;
QX11EmbedContainer* container = new QX11EmbedContainer;
main_window->setCentralWidget(container);
container->setStyleSheet("background-color:red;");
if (EMBEDDED_IS_QT)
{
create_qt_embed(container->winId());
}
else
{
// gtk_widget_get_window(GTK_WIDGET(button));
GtkWidget* window;
GtkWidget* button;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new ();
gtk_widget_show (button);
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show(window);
XID id = GDK_WINDOW_XWINDOW (GTK_WIDGET(window)->window);
container->embedClient(id);
}
main_window->show();
QApplication::exec();
} else
{
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show(window);
GtkWidget* container = gtk_socket_new();
gtk_widget_show(container);
gtk_container_add(GTK_CONTAINER(window), container);
if (EMBEDDED_IS_QT)
{
create_qt_embed(gtk_socket_get_id(GTK_SOCKET(container)));
} else
{
create_gtk_plug(gtk_socket_get_id(GTK_SOCKET(container)));
}
gtk_main();
}
return 0;
}
(长按关注)
qt widget 嵌套与弹出_Gtk widget 与 Qt Widget的相互嵌套相关推荐
- VS中开发Qt程序,控制台不弹出
VS中开发Qt,控制台不弹出 用VS开发Qt应用程序的时候,使用std::cout发现控制台不弹出, 解决方案: 工程->属性->配置属性->链接器->系统->子系统中将 ...
- qt中颜色对话框弹出时应用程序输出栏出现QWindowsWindow::setGeometry: Unable to set geometry 180x30+345+311 (frame: 202x8
引言 在项目中点击按钮,弹出颜色选择对话框,但同时应用程序会在应用程序输出一栏中显示 QWindowsWindow::setGeometry: Unable to set geometry 180x3 ...
- python qt5 增加文本框_Python用PyQt5制作弹出式输入框,Qt图形界面编程之QInputDialog...
前面内容,我们介绍了PyQt5的一些常用基本控件. 温故而知新 计数器QSpinBox使用详解,Python用PyQt5制作图形界面基础控件篇 Python用PyQt5实现多种弹出消息框,QMessa ...
- qt中颜色对话框弹出时应用程序输出栏出现setGeometry: Unable to set geometry 152x30+682+300 on QWidgetWindow/‘QColorDialo
前言 在项目中点击按钮,弹出颜色选择对话框,但同时应用程序会在应用程序输出一栏中显示. setGeometry: Unable to set geometry 152x30+682+300 on QW ...
- 诡异的QT脱离主界面弹出之前删除的UI子部件问题
Qtableview 在重新渲染后点击下一页弹出独立窗口 用了独立的dbpage做分页,里面内置了多线程来获取总页数等信息. 当输入新的页面大小时,又新建了一个dbpage分页对象.这个时候问题就出来 ...
- el-table动态渲染表格列el-table-column且里边嵌套el-popover弹出框语法
总结下表格中每列的动态渲染实现语法:vue + element <el-table><template v-if="columns.length > 0"& ...
- Qt 如何新建一个弹出式窗口
在QT原有工程处右键 点击添加新文件 CSDN QT开发文章推荐:Qt开发必备技术栈学习路线和资料 选择QT-QT界面设计师(有的版本可能叫QT GUI) 新建好的文件列表如下,我添加的的新窗口 ...
- 【Qt】弹出子窗口时禁用主窗口
子窗口名:userManagerDialog Qt::WindowFlags flags = Qt::Dialog;userManagerDialog->setWindowFlags(flags ...
- 利用Layer组件弹出多个对话框(非嵌套)与关闭及刷新
页面A中弹出页面B,在页面B中弹出页面C,在layer做嵌套ifframe弹出时会遇到C页面被嵌套在B页面中,如果C尺寸大于B,则C将不能显示完整.这个时候可以考虑B,C页面均由A页面弹出从而避免嵌套 ...
最新文章
- Python自然语言处理学习笔记(66):7.7 小结
- STM32F4 编程手册学习1_编程模型
- C++中extern关键字使用 http://blog.csdn.net/sruru/article/details/7951019
- 全面的GC原理及调优
- [学习] FPGA之基本原理(可能理解不对)
- 第七十期:IT技术人员的自我修养
- ps导出gif颜色不对_PS基础知识(1)
- Windows学习总结(18)——Windows运行命令与Win键+快捷键再总结
- 谈谈自己对正则化的一些理解
- Listener监听器已经Listener的小案例
- Rust手机端皮肤搜索、生成Rust专属名片、转盘概率模拟
- 为什么Audition CC2017扫描不了电音插件,你需要这个工具
- Python数据分析 笔记4(matplotlib库)
- 《 阿房宫赋》古文鉴赏
- Uninstalltool-专业卸载工具
- 高等工程数学 —— 第四章 (1)线性方程组的直接解法与广义逆矩阵求解矛盾方程组
- AT24C1024读写
- 【使用教程】VSCode创建json文件
- Typora插入图片的合理保存【windows平台】
- 可视化 | Python精美动态水球图