|
5Qter豆
在qt贴吧的帖子被系统删了,先来这里发一贴吧
本小白最近想将一个很好用的搜索应用everything嵌入到自己开发的界面中,遇到了很奇怪的问题,先给出完整源码:implant2.rar - 蓝奏云 (lanzous.com)
这里是部分的,大佬或许不用下载完整的也能看出问题:
#include "mainwindow.h"#include "ui_mainwindow.h"#include "qpushbutton.h" //按钮控件的头文件#include <QProcess>#include "windows.h"#include "stdio.h"#include <QDebug>#include <QMainWindow>#include <QWindow>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ QProcess *pro = new QProcess(this); pro->start("C:/Program Files/Everything/Everything.exe", QStringList("C:/Program Files/Everything/Everything.exe")); ui->setupUi(this);}
void MainWindow::integrate(){ QString Name = "Everything"; QString Name2 = "MainWindow"; WId hwnd = (WId)FindWindow(L"EVERYTHING",(LPCTSTR)Name.unicode()); WId m_hWnd = (WId)FindWindow(L"Qt5QWindowIcon",(LPCTSTR)Name2.unicode()); qDebug()<<hwnd; qDebug()<<m_hWnd;
QWindow *m_window; m_window = QWindow::fromWinId(WId(hwnd));
QWidget *m_widget; m_widget = QWidget::createWindowContainer(m_window,this);
//方法1 setCentralWidget(m_widget);
}
void MainWindow::on_pushButton_clicked() {// QProcess *pro = new QProcess(this);// pro->start("C:/Program Files/Everything/Everything.exe", QStringList("C:/Program Files/Everything/Everything.exe")); integrate(); }
MainWindow::~MainWindow(){ delete ui;}由于不大懂这方面的知识,所以参照的也是网上的方法,在浏览了很多这类的博客后终于鼓捣出来这么个东西,然而发现出了大问题,程序根本没嵌入到qt界面中!!一开始在设计界面通过拖动的方式拖了一个widget出来,想法也是将外部程序嵌入到这个widget中,后来为了检测问题就用了如代码中的方法1,然后我发现问题了!我创建的QWindow对象里面是空的,没有everything这个外部程序在里面!在这里可难倒我了,怎么想也想不明白!求大佬帮忙分析一波,改进一下,就差最后这一点点进度了!不胜感激!拿出我新注册得到的5个豆子了!
|
|