本小白最近想將一個很好用的搜索應用everything嵌入到自己開發的界面中,遇到了很奇怪的問題,先給出完整原始碼https://wws.lanzous.com/iAzuLj4a2hc
everying官網:https://www.voidtools.com/zh-cn/support/everything/installing_everything/
由于不大懂這方面的知識,所以參照的也是網上的方法,在瀏覽了很多這類的博客后終于鼓搗出來這么個東西,然而發現出了大問題,程式根本沒嵌入到qt界面中!!一開始在設計界面通過拖動的方式拖了一個widget出來,想法也是將外部程式嵌入到這個widget中,后來為了檢測問題就用了如代碼中的方法1,然后我貌似發現問題了!我創建的QWindow物件里面是空的,沒有everything這個外部程式在里面!在這里可難倒我了,怎么想也想不明白!求大佬幫忙分析一波,改進一下,就差最后這一點點進度了!
這里是部分的,大佬或許不用下載完整的也能看出問題:
mainwindow.cpp:
#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;}
uj5u.com熱心網友回復:
新發現:在嘗試嵌入別的不同程式比如說系統自帶的計算器時,也沒有嵌入成功?因為嵌入的widget界面是一片全白,沒有出現計算器界面,而嵌入everything時是一片全灰,看來問題并不是容器為空而是別的問題?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231184.html
標籤:其他開發語言
