昨天遇到一个兄台,说要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 οnsubmit="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
运行结果