我最近研究用windows,qt5.9.7和ActiveQT做点事情,我实现了参考文献里面所涉及的内容,然后进一步修改了一下代码,我这里把代码分享出来,首先在pro文件中添加:
QT += core gui axcontainer
然后我的mainwindow.h文件为:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <ActiveQt/QAxWidget>
#include <QLineEdit>
#include<QWidget>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void loadNavigate();
private:
Ui::MainWindow *ui;
QLineEdit *lineUrl;
QAxWidget* webWidget;
QWidget* widget ;
};
#endif // MAINWINDOW_H
我的mainwindow.cpp文件为:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVBoxLayout>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
lineUrl = new QLineEdit;
lineUrl->setText("www.baidu.com");
connect(lineUrl,SIGNAL(returnPressed()),this,SLOT(loadNavigate()));
widget = new QWidget;
webWidget = new QAxWidget;
//设置ActiveX控件为IEMicrosoft Web Browser
//设置ActiveX控件的id,最有效的方式就是使用UUID
//此处的{8856F961-340A-11D0-A96B-00C04FD705A2}就是Microsoft Web Browser控件的UUID
webWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));
webWidget->setObjectName(QString::fromUtf8("webWidget"));//设置控件的名称
webWidget->setFocusPolicy(Qt::StrongFocus);//设置控件接收键盘焦点的方式:鼠标单击、Tab键
webWidget->setProperty("DisplayAlerts",false); //不显示任何警告信息。
webWidget->setProperty("DisplayScrollBars",true); // 显示滚动条
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(lineUrl);
mainLayout->addWidget(webWidget);
// setLayout(mainLayout);
widget->setLayout(mainLayout);
// webWidget->setLayout(mainLayout);
setCentralWidget(widget);
// setWindowState(Qt::WindowMaximized);//最大化
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::loadNavigate()
{
QString sUrl = lineUrl->text().trimmed();
webWidget->dynamicCall("Navigate(const QString&)",sUrl);
}
然后其他的都是默认的,然后就可以编译执行了。
界面展示
参考文献
[1].Qt打开网页QAxWidget.https://blog.csdn.net/kjxuexi1840/article/details/81326640
[2].Qt:Attempting to add QLayout "" to MainWindow "", which already has a layout.https://blog.csdn.net/rl529014/article/details/52823429