当前位置: 首页 > news >正文

做长海报的网站网络设计的内容是什么

做长海报的网站,网络设计的内容是什么,anydrag建站专家网站建设系统,制作简单的网页的软件一、前言 使用QT开发,有时需要调用一些外部程序,但是单独打开一个外部窗口有的场合很不合适,最好是嵌入到开发的QT程序界面中。还有就是自己开发的n个程序,一个主程序托n个子程序,为了方便管理将各个程序独立&#xf…

一、前言

使用QT开发,有时需要调用一些外部程序,但是单独打开一个外部窗口有的场合很不合适,最好是嵌入到开发的QT程序界面中。还有就是自己开发的n个程序,一个主程序托n个子程序,为了方便管理将各个程序独立,但是运行还要整体去一起,也就需要将各个子程序嵌入到主程序预留的窗口处。

本文主要从以下几个方面进行总结:

  • 将外部程序嵌入到主程序窗口中
  • 外部程序与主程序通讯(暂无总结)

二、环境

qt5.7

window10

CPU是AMD Ryzen 7 4800U with Radeon Graphics 1.80 GHz,可能有关联

三、正文

将外部程序嵌入到主程序窗口中

方法千篇一律,在网上搜索有很多的方法,找到最合适的方法才是最重要的,这里我主要总结在我的电脑上能够正常运行的方法。

主程序名称mytool,子程序名称note,主程序创建一个widget给子程序预留,核心代码如下:

    //启动外部程序QProcess *process1 = new QProcess(this);process1->setProcessChannelMode(QProcess::MergedChannels);//通道设置,可不加process1->start("../可执行程序/note.exe");//qApp->applicationDirPath()+"/note.exe"connect(this,&QObject::destroyed,[=](){process1->close();});//程序关闭时关闭子程序Sleep(500);//延时必须加,不加不好使HWND handle = FindWindow(nullptr, L"note");//使用process1->pid()不好使,只能用这种方式
//    qDebug()<<(WId)handle<<(WId)process1->pid()<<process1->pid();if(handle != nullptr){//nullptrQWindow* externWindow = QWindow::fromWinId((WId)handle);QWidget* container_note = QWidget::createWindowContainer(externWindow, ui->widget_note);//存放外部窗口的Widget//将外部程序窗口嵌入到QWidget子类中显示container_note->setGeometry(0, 0, externWindow->width(), externWindow->height());//设置嵌入的窗口位置ui->btn_menu_2->setEnabled(true);//记事本加载成功}else{tray->showMessage("消息","加载失败!程序损坏或丢失请检查!",QSystemTrayIcon::MessageIcon::Warning,1000);//发送通知消息 //显示信息图标(NoIcon/Information/Warning/Critical)ui->btn_menu_2->setEnabled(false);//加载成功 失能按键}

重点1:Sleep延时函数必须得有,否则QProcess外部程序还没启动完全,是无法正常获取窗口ID的,也就嵌入不成功。

重点2:使用FindWindow函数返回数据类型定义为HWND,未使用WID,会失败,也没有使用process1.pid()获取ID,也会失败,目前测试只有这种方式获取外部窗口句柄好使。

重点3(本程序未使用):如果是调用其他第三方程序,不是自己开发的子程序,需要使用SPY++获取窗口句柄,网上随便就能下载,选择查找窗口,拖拽准心到目标窗口,就能看见返回值。延时时间需要根据外部第三方程序启动时间动态调整,很可能时间不够也不好使。

重点4:嵌入的窗口如果是固定尺寸,嵌入完毕后使用setGenmetry设置一下窗口位置和大小,否则会有大家常说的白边(PS吐槽一句,有的人写博客,就这一个小破功能就要把自己博客订阅花钱才能看,守着你的文章发霉去吧)。如果是不固定尺寸,可调节大小,将widget创建为私有全局对象,使用event重新根据预留的widget窗口大小动态调整嵌入的程序大小。

。h
pravite:
QWidget* container_note = nullptr;	//存放外部窗口的Widget
。cpp
void Widget::resizeEvent(QResizeEvent *event)	//外部窗口大小随动
{QWidget::resizeEvent(event);if (container_note != nullptr){container_note->resize(event->size());}
}

外部程序与主程序通讯(暂无总结)

内部通信也可以通过信号槽等绑定消息,也可以通过读取公共文本文件实现,这里暂时未使用到

四、结语

参考文章1

http://www.yayakq.cn/news/441868/

相关文章:

  • 国内设计好的网站案例制作公司网站的流程
  • 网站建设运营公司排行wordpress配置文件数据库
  • 青岛做网站的公司哪个比较好广安哪里做网站
  • 福州网站的优化微信公众号商城怎么开通
  • 传奇网站免费空间网站如何更新维护
  • 中国网站邯郸网站设计联系电话
  • 蛋糕店网站建设模版东莞企业网站费用
  • 可以做课程的网站重庆seo团队
  • 广州大型网站建设网站建设策划书网页设计
  • 用dw做的网站怎么发布到网上网站投票制作
  • 怎么自己做网站吗东营哪里做网站
  • 自己公司内网网站和外网怎么做同步怎么建网站教程视频
  • 怎么做仿制网站工信部网站备案查询 验证码
  • 做网站要空间还是服务器wordpress整合ckplay
  • 上孩做网站传媒公司 网站开发
  • 萝岗网站建设制作怎样备份wordpress
  • 宁波三优互动网站建设公司怎么样域名解析后如何建设网站
  • 做网站必须购买空间吗?做一手房有哪些网站比较好啊
  • 尚德建设集团网站wordpress 3.9.1 中文
  • 喀什的网站怎么做广告策划书怎么写
  • 大连网站推广工具wordpress页面php代码
  • 东莞佳诚网站建设有限公司vps网站权限
  • 增长超人网站建设价格美宜佳企业网络营销推广方式
  • python如何做网站wordpress上传顶部图像
  • 网站建设分析案例在线永久免费的服务器有哪些
  • 南昌网站seo外包服务福州建设局网站
  • 时间轴网页网站模板企业数字化管理系统有哪些
  • 安康市网约车平台seo外链工具有用吗
  • dedecms网站开发环境天津市建设与管理网站
  • 深圳做h5网站设计wordpress安全配置文件