查看完整版本: [-- QTabWidget每个page多进程? --]

QTCN开发网 -> Qt基础编程 -> QTabWidget每个page多进程? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

snow_man_0 2020-10-21 13:24

QTabWidget每个page多进程?

all-in-one适合多个同一目的widget放在一个界面的布局,QTabWidget标签页适合管理多个功能独立的widget

像chrome一样,让QTabWidget每个page在单独的进程里。拖放Tab时,Tab离开当前QTabBar,会产生新的框架或其它框架的QTabBar能接收这个Tab

好处是每个page在单独的进程里,当前page崩溃时框架不会闪退;在多屏幕时,拖放Tab方便其它屏幕产生框架


拖放和多进程,有没有人研究过这方面?多进程的思路?

272064949 2020-10-21 16:22
最简单的思路就是,新建tab页时,开启一个子进程,子进程提供winId,来让父进程把窗口展示出来,业务逻辑由子进程自己控制,父进程建立一个tcpserver和子进程的tcpclient通迅,但没有试过,也不知道行不行得通,如果不是什么巨型项目的话建立这么一套体系感觉没什么用啊,还不如就在一个进程里舒服。

20091001753 2020-10-21 17:06
可能让你失望了:
Qt 规定,界面绘制只能在主线程。
也就是,你不能让多个线程绘制界面。

在 Qt 里,多线程是指:主线程绘制界面,其他线程处理任务与数据。

snow_man_0 2020-10-21 20:14
272064949:最简单的思路就是,新建tab页时,开启一个子进程,子进程提供winId,来让父进程把窗口展示出来,业务逻辑由子进程自己控制,父进程建立一个tcpserver和子进程的tcpclient通迅,但没有试过,也不知道行不行得通,如果不是什么巨型项目的话建立这么一套体系感觉没什么用啊,还不如就 .. (2020-10-21 16:22) 

拖放Tab时,框架间转移winId,这个办法可能可行

系统用户 2020-10-21 22:03
建议调用相关平台的api来实现窗体嵌入操作。
比如Windows下可以调用SetParent把自己的窗体嵌入到其他进程中。

snow_man_0 2020-10-22 06:18
系统用户:建议调用相关平台的api来实现窗体嵌入操作。
比如Windows下可以调用SetParent把自己的窗体嵌入到其他进程中。 (2020-10-21 22:03) 

查了下,SetParent嵌入的窗体和主窗体之间存在焦点的问题
QWindow::fromWinId可以代替SetParent的功能,不知道存不存在焦点问题


查看完整版本: [-- QTabWidget每个page多进程? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled