[分享] Wt web c++ toolkit 用c++寫網頁
基本上這個東西沒有很紅,
我個人覺得有幾個原因:
一.架設與維護人員訓練耗時
要找精通 c++ & javascript & css & (ajax | html5 | flash)的人
你是要殺人喔?
二.網站製作時間相對較長、成本較高
語言本身的難度、編譯的時間、溝通的時間、debug的時間
三.要錢而且很貴
599美金,跟一個microchip編譯器一樣貴。
四.沒有人幫他寫framework跟plugin
不像 wordpress 一樣,掛一掛就解一半的問題~
大伙進攻囉!
網頁的大門已經打開了! 打開很久了(咦?
程式碼載點: http://damody.googlecode.com/files/image_procesing_wt.7z
需要的 library prebuilt:
library-prebuilt-for-windows.googlecode.com/files/wt-3.3.0-vc11up3-x64.7z
library-prebuilt-for-windows.googlecode.com/files/zlib-1.2.7-mingw-x64.7z
大概說一下,
WRun 會從 cmd 參數初始化整個程式,
而每次有人要看網頁時,
Wt 都會呼叫 createApplication 來產生一個 WApplication 實體跟一個 thread,
setTitle("Hello world"); // application title
root()->addWidget(new WText("Your name, please ? ")); // show some text
nameEdit_ = new WLineEdit(root()); // allow text input
nameEdit_->setFocus(); // give focus
WPushButton* button
= new WPushButton("Greet me.", root()); // create a button
button->setMargin(5, Left); // add 5 pixels margin
root()->addWidget(new WBreak()); // insert a line break
greeting_ = new WText(root()); // empty text
初始化一堆按鍵。
nameEdit_->enterPressed().connect(std::bind([ = ]()
{
greeting_->setText("Hello there, " + nameEdit_->text());
}));
button->clicked().connect(std::bind([ = ]()
{
greeting_->setText("Hello there, " + nameEdit_->text());
}));
綁函數。
重點 載完圖片後用 opencv 轉灰階並顯示:
// React to a succesfull upload.
fu->uploaded().connect(std::bind([ = ]()
{
out->setText("File upload is finished.");
std::string spool = fu->spoolFileName();
cv::Mat img = cv::imread(spool);
cvtColor(img, img, CV_BGR2GRAY);
std::string savename;
{ // create save name
static int count = 0;
count++;
if (count > 100)
{
count = 0;
}
char buffer[32];
itoa(count, buffer, 10);
savename = "tmp" + std::string(buffer) + ".png";
}
cv::imwrite(savename, img);
Wt::WFileResource* imageFile = new Wt::WFileResource("image/png", savename);
imageFile->suggestFileName(savename);
Wt::WImage* image = new Wt::WImage(imageFile, "PNG version");
Wt::WFileResource* imageFileOri = new Wt::WFileResource("image/png", spool);
imageFileOri->suggestFileName(savename);
Wt::WImage* imageOri = new Wt::WImage(imageFileOri, "PNG version");
root()->addWidget(image);
root()->addWidget(imageOri);
}));
結果圖:
http://i.imgur.com/tNKhnLz.png

再說一次! 大伙進攻囉! 用C++寫網頁 Server 根本無所不能!
快速整合各種硬體,單機介面程式轉網路介面程式,
相信想像力豐富的各位一定能善用這個工具的,
對了我不是工讀生哈哈,官網上寫商業授權要599美金。
我已經把 vs2012 x64 的 basic prebuilt 載點放出來了,
剩下的靠各位的努力了!
這個範例 code 要 c++11 才能編,
用 vs2012 以前的就自己努力吧!
--
【板主:memy/cat0405/icyfang】[LoL] ILP 5 : TPA vs. Fnatic 看板《LoL》
[←]離開 [→]閱讀 [Ctrl-P]發表文章 [d]刪除 [z]精華區 [i]看板資訊/設定 [h]說明
編號 日 期 作 者 文 章 標 題 人氣:8912
● ★ m爆12/01 Xargon □ [電競] IPL5 世界,總決賽。 Day2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.175.35
推
09/29 11:13, , 1F
09/29 11:13, 1F
cgi & fcgi 是 server 把對應的 副檔名的檔案 傳給php之類的程式,
php之類的再回傳 這些script處理完後的html檔
而這個是在C++中回傳HTML,
產生HTML的過程還可以單步執行查看,
裡面的事件也可以直接用Debuger除錯,
總之就是自己開web server自己處理,
fcgi是別人開server有事才請你處理。
※ 編輯: damody 來自: 140.118.175.35 (09/29 12:45)
推
09/29 13:15, , 2F
09/29 13:15, 2F
沒錯,不過在 windows 下 gtk 的東西要編過太花時間,
懶的編了,qt 要跟 vs debug 整合很累,所以也懶。
我以前也以為qt很棒,直到我開始使用之後,
有幾個問題,
一.不用他的 qtcreator 就超難用
二.qmake 的設定不夠友善,不想vs全部的選項都有UI,你還要打script
三.library不提供 vs sln 檔,用他的 command 各種編譯問題要解
懶的解,他的 prebuilt 又不支援所有的 runtime 組態
四.沒有 auto link 機制他的 library 又多
總之我很懶,雖然在 linux 下我都是用 Qtcreator 寫程式
不過 windows 下我只愛用 visual studio。
※ 編輯: damody 來自: 140.118.175.35 (09/29 13:34)
推
09/29 15:58, , 3F
09/29 15:58, 3F
→
09/29 20:09, , 4F
09/29 20:09, 4F
→
09/30 09:02, , 5F
09/30 09:02, 5F
→
09/30 09:04, , 6F
09/30 09:04, 6F
→
09/30 17:04, , 7F
09/30 17:04, 7F
→
10/01 01:29, , 8F
10/01 01:29, 8F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章