昨天遇到一个兄台,说要qt写界面
有时界面会变动很大
我的建议是用 qtwebkit
具体是什么样的呢,也不知道那个兄台能不能看到这博客
把以前项目中的内容,简化成例子
为这个项目做的模拟器
发上来,朋友们看看
mkdir qwebkit
cd qwebkit
QtDesigner
建立form.ui 到qwebkit
控件名 webView
控件名 lineEdit
拖动调整大小
保存
Qt Creator 建立qwebkit.qrc
也可以
vi qwebkit.qrc
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>test.htm</file>
</qresource>
</RCC>
vi test.htm
<html>
<style type="text/css">
.boxshadow1 {
-moz-box-shadow: 0 2px 10px 1px rgba(255, 0, 0, 0.2);
-webkit-box-shadow: 0 2px 10px 1px rgba(255, 0, 0, 0.2);
box-shadow: 0 2px 10px 1px rgba(255, 0, 0, 0.2);
background: -webkit-gradient(linear, 0 20, 0 100%, from(#EEF), to(#BBB));
border-radius: 15px 5px 25px 0px;
position:absolute;
top:10px; left:50px;
height:76px;
width:150px;
font-size:30px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: #EEE;
border-right-color: #333;
border-bottom-color: #333;
border-left-color: #EEE;
}
</style>
<body>
<div width="100px" height="50px" class="boxshadow1" >
<span>html 5</span></div>
<br><br><br><br><br>
<form onsubmit="qtwebkit.submit()">
<input type="text" id="username">
<input type="submit" value="Submit">
</form>
</body>
</html>
vi qtwebkit.h
#ifndef QWEBKIT_H
#define QWEBKIT_H
#include <QtGui/QWidget>
#include <QWebFrame>
#include <QWebElement>
#include <QMainWindow>
#include <QtGui>
#include "ui_form.h"
class webkit_test : public QWidget
{
Q_OBJECT
public:
webkit_test(QWidget *parent = 0, Qt::WFlags flags = 0)
{
ui.setupUi(this);
ui.webView->setUrl(QUrl("qrc:/test.htm"));
connect(ui.webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
this, SLOT(JavaScriptWindowObject()));
}
~webkit_test()
{
exit(0);
}
public slots:
void submit()
{
QWebFrame *frame = ui.webView->page()->mainFrame();
QWebElement firstName = frame->findFirstElement("#username");
ui.lineEdit->setText(firstName.evaluateJavaScript("this.value").toString());
}
void JavaScriptWindowObject()
{
ui.webView->page()->mainFrame()->addToJavaScriptWindowObject("qtwebkit", this);
}
private:
Ui::Form ui;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow()
{
webkitWidget = new webkit_test(this);
setCentralWidget(webkitWidget);
}
private:
webkit_test *webkitWidget;
};
#endif
vi main.cpp
#include <QtGui/QApplication>
#include "qtwebkit.h"
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(qwebkit);
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.setWindowTitle("Test qtwebkit");
mainWindow.resize(800,600);
mainWindow.show();
return app.exec();
}
export PATH=/usr/local/qt4.6/bin:$PATH
qmake --version
QMake version 2.01a
Using Qt version 4.6.3 in /usr/local/qt4.6//lib
qmake -project
vi qwebkit.pro
在最开始加入
QT += webkit network
改 TARGET =qtwebkit
再执行
qmake
make
运行结果