标题:QTabWidget每个page多进程?
作者:snow_man_0
日期:2020-10-21 13:24
内容:
all-in-one适合多个同一目的widget放在一个界面的布局,QTabWidget标签页适合管理多个功能独立的widget
像chrome一样,让QTabWidget每个page在单独的进程里。拖放Tab时,Tab离开当前QTabBar,会产生新的框架或其它框架的QTabBar能接收这个Tab
好处是每个page在单独的进程里,当前page崩溃时框架不会闪退;在多屏幕时,拖放Tab方便其它屏幕产生框架
拖放和多进程,有没有人研究过这方面?多进程的思路?
#1 [272064949 10-21 16:22]
最简单的思路就是,新建tab页时,开启一个子进程,子进程提供winId,来让父进程把窗口展示出来,业务逻辑由子进程自己控制,父进程建立一个tcpserver和子进程的tcpclient通迅,但没有试过,也不知道行不行得通,如果不是什么巨型项目的话建立这么一套体系感觉没什么用啊,还不如就在一个进程里舒服。
#2 [20091001753 10-21 17:06]
可能让你失望了:
Qt 规定,界面绘制只能在主线程。
也就是,你不能让多个线程绘制界面。
在 Qt 里,多线程是指:主线程绘制界面,其他线程处理任务与数据。
#3 回 272064949 的帖子 [snow_man_0 10-21 20:14]
272064949:最简单的思路就是,新建tab页时,开启一个子进程,子进程提供winId,来让父进程把窗口展示出来,业务逻辑由子进程自己控制,父进程建立一个tcpserver和子进程的tcpclient通迅,但没有试过,也不知道行不行得通,如果不是什么巨型项目的话建立这么一套体系感觉没什么用啊,还不如就 .. (2020-10-21 16:22)
拖放Tab时,框架间转移winId,这个办法可能可行
#4 [系统用户 10-21 22:03]
建议调用相关平台的api来实现窗体嵌入操作。
比如Windows下可以调用SetParent把自己的窗体嵌入到其他进程中。
#5 回 系统用户 的帖子 [snow_man_0 10-22 06:18]
系统用户:建议调用相关平台的api来实现窗体嵌入操作。
比如Windows下可以调用SetParent把自己的窗体嵌入到其他进程中。 (2020-10-21 22:03)
查了下,SetParent嵌入的窗体和主窗体之间存在焦点的问题
QWindow::fromWinId可以代替SetParent的功能,不知道存不存在焦点问题