當前位置:首頁 » 數據倉庫 » gtk資料庫編輯
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

gtk資料庫編輯

發布時間: 2022-09-05 21:03:40

㈠ 秒贊網gtk怎麼上傳資料庫

這個跟gtk不gtk什麼的關系不大了吧。。。。。。。

㈡ Linux下用gtk操作mysql實現聊天功能。。。

  1. 學習mysql的C API。

  2. 學習GTK的基本用法,比如按鈕。

就從這兩方面入手。

附件里有兩個參考的網址。

㈢ Window下GTK+能不能靜態編譯進程序

分布在各目錄下的Kconfig構成了一個分布式的內核配置資料庫,每個Kconfig分別描述了所屬目錄源文件相關的內核配置菜單。在內核配置make menuconfig(或xconfig等)時,從Kconfig中讀出配置菜單,用戶配置完後保存到.config(在頂層目錄下生成)中。在內核編譯時,主Makefile調用這個.config,就知道了用戶對內核的配置情況。 上面的內容說明:Kconfig就是對應著內核的配置菜單。假如要想添加新的驅動到內核的源碼中,可以通過修改Kconfig來增加對我們驅動的配置菜單,這樣就有途徑選擇我們的驅動,假如想使這個驅動被編譯,還要修改該驅動所在目錄下的Makefile。因此,一般添加新的驅動時需要修改的文件有兩種(注意不只是兩個)*Kconfig
config symboloptions

symbol就是新的菜單項,options是在這個新的菜單項下的屬性和選項其中options部分有:1、類型定義:
每個config菜單項都要有類型定義,bool:布爾類型, tristate三態:內建、模塊、移除, string:字元串, hex:十六進制, integer:整型例如config HELLO_MODULE
bool "hello test mole" bool類型的只能選中或不選中,tristate類型的菜單項多了編譯成內核模塊的選項,假如選擇編譯成內核模塊,則會在.config中生成一個CONFIG_HELLO_MODULE=m的配置,假如選擇內建,就是直接編譯成內核影響,就會在.config中生成一個CONFIG_HELLO_MODULE=y的配置.2、依賴型定義depends on或requires
指此菜單的出現是否依賴於另一個定義config HELLO_MODULE
bool "hello test mole"
depends on ARCH_PXA
這個例子表明HELLO_MODULE這個菜單項只對XScale處理器有效,即只有在選擇了ARCH_PXA,該菜單才可見(可配置)。3、幫助性定義
只是增加幫助用關鍵字help或---help---

更多詳細的Kconfigconfig語法可參考: Second: 內核的Makefile內核的Makefile分為5個組成部分:
Makefile 最頂層的Makefile
.config 內核的當前配置文檔,編譯時成為頂層Makefile的一部分
arch/$(ARCH)/Makefile 和體系結構相關的Makefile
s/ Makefile.* 一些Makefile的通用規則
kbuild Makefile 各級目錄下的大概約500個文檔,編譯時根據上層Makefile傳下來的宏定義和其他編譯規則,將源代碼編譯成模塊或編入內核。頂層的Makefile文檔讀取 .config文檔的內容,並總體上負責build內核和模塊。Arch Makefile則提供補充體系結構相關的信息。 s目錄下的Makefile文檔包含了任何用來根據kbuild Makefile 構建內核所需的定義和規則。(其中.config的內容是在make menuconfig的時候,通過Kconfig文檔配置的結果) 在linux2.6.x/Documentation/kbuild目錄下有詳細的介紹有關kernel makefile的知識。最後舉個例子:
config MTD_flashtest
tristate 「ap71 flash"這樣當make menuconfig時 ,將會出現 ap71 flash選項。第三:修改該目錄下makefile文檔。
添加如下內容:obj-$(CONFIG_MTD_flashtest) += flashtest.o這樣,當您運行make menucofnig時,您將發現ap71 flash選項,假如您選擇了此項。該選擇就會保存在.config文檔中。當您編譯內核時,將會讀取.config文檔,當發現ap71 flash 選項為yes 時,系統在調用/driver/mtd/maps/下的makefile 時,將會把 flashtest.o 加入到內核中。即可達到您的目的。

㈣ 在linux 平台下,想做一個臉型識別的demo,應用界面是用gtk嗎,然後是怎麼把照片讀取進來,並在gtk上顯示

你當對路得、米利暗、拿俄米說:
我也沒有毯子。
在爺爺去世後掛到牆頭
此刻,我以絕對的信念堅信。
搖擺的樹頂交叉在一起
悟語三兩傾,哈哈

㈤ 在Linux下有沒有什麼圖形化界面的C編程工具介紹一下

Eclipse C/C++集成包(選擇Linux版本的,選擇相應的32位或者64位的);
不喜歡英文界面,可以添加中文插件;
想寫qt,就裝qt插件;
想寫gtk,就裝gtk插件;
想要窗口編輯器,就裝相應的插件;
想。。。就裝相應的插件。。。
。。。
。。。
如果想練資料庫,可以安裝簡易資料庫插件。。。
。。。
如果想。。。

此處省略N字

㈥ MFC,WTL,WPF,wxWidgets,Qt,GTK 各有什麼特點

WTL都算不上什麼Framework,就是利用泛型特性對Win API做了層封裝,設計思路也沒擺脫MFC的影響,實際上用泛型做UI
Framework也只能算是一次行為藝術,這個思路下繼續發展就會變得沒法用了,比如 代碼過於復雜,編譯太慢,出錯不好調試等問題難以解決。
而且封裝得也不完全,還是隨處可見 HWND HDC之類的東西。
用途主要是寫一些很小的程序,或者作為其他UI框架的後端實現部分,比如我寫過一個小框架用來做安裝卸載程序,非常小,其中創建管理窗口部分是用WTL的。

MFC
是更高級點的Win API封裝,比WTL封裝徹底,很難見到HWND
HDC了,也提供了不少實用工具類,比如高級控制項,泛型容器,IO訪問,網路協議等。除此之外,還提供了一些基本框架,比如
Document/View,這就是個MVC的簡化版本,只有MV,但是對於數據的管理,消息的傳遞等又沒有什麼約束,導致Doc/View被用得亂七八
糟。尤其是對事件處理的模型,消息映射是功能簡陋,而且容易出錯的方式,唯一優點是性能好。 從VC++
1.X就有MFC了,那時整個UI界的設計思想都比較落後(除了Apple),MFC又背負了沉重的兼容性包袱,比如vc++
1.52的MFC程序到了vc2003稍加修改都可以編譯,導致MFC後期沒有什麼發展,就是沿著老的思路完善了些細節,添加了些組件,但是根本性的設計
問題沒有改進。

GTK,這個吃了語言的虧,用C寫面向對象實在是痛苦,雖然在思想上比MFC要先進了些,但是寫出來的代碼比MFC要羅嗦很多了。相比MFC,多了Layout的概念,事件處理上有了Signal/slot,雖然用起來很麻煩。

wxWidgets,
這個基本就是個跨平台的MFC,對各個平台的差異做了抽象,實際上後端大多還是用平台原生的API實現,好多控制項都是直接用系統原生的。有
wxWidgets for
GTK+的版本,後端就是GTK+,wxWidgets就是一層殼。這也是wxWidgets的優點,它編譯出來的程序發行包比較小,性能也不錯。

以上這些就是上世紀90年代的UI Framework技術水平了,至今它們也依然沒有太多進步。
下面來談談21世紀的技術。

Qt,
雖然它也是上世紀90年代出現的,但是它在21世紀有了長足的進步。應該說它的起點就比較高,一開始就定位跨平台,而且不滿足於簡單封裝系統API,而是
要自己創造出一套完整的API和框架,甚至要代替系統API,所以不僅僅是做UI,而是涉及到了APP開發所用到的所有東西,包括網路,資料庫,多媒體,
腳本引擎等。signal/slot是Qt發明的,這是事件通知模型里C++語言的最佳實現了,甚至我都覺得這該寫進C++標准,估計C++委員會的老頑
固們是從不寫GUI的。
早期的QT也是沒有DirectUI的概念的,每一個QWidget都對應一個原生窗口,從Qt4.4開始,只有頂層
QWidget才是原生窗口,而Child Widget是Alien
Widget,只是個抽象的圖層不對應原生窗口,這就實現了DirectUI的概念,很多圖形效果也就變得可能了,比如窗口層疊透明效果。
在4.8後實現了QPA(Qt Platform Abstraction),這就使移植Qt變得很容易,目前Qt是支持平台最多的框架沒有之一。
由於早期授權的問題,Qt對於開源社區不是很友好,導致推廣不太順利,直到它改成了LGPL方式,如果Qt能早點想開了,恐怕就沒有wxWidgets的生存空間了。
Qt的缺點也是有的,就是太大,不過可以自己剪裁,我可以把QT庫剪裁到發行包壓縮後2.5MB。

WPF,
微軟在Win
Form的思路上走到死胡同後,終於痛下決心用正確的方法開發UI庫了。21世紀的UI一定是定義出來的,絕對不能是代碼寫出來的,所以有了XAML這個
強大的定義工具,不但可以定義UI布局,還包括圖形動畫效果,消息響應方式等。配合C#這種優秀的語言,更是如虎添翼。但是問題也很明顯,就是過於龐大,
不僅開發時要用到龐大的IDE和設計工具,發行的安裝包也十分巨大,所以目前還是很少有人拿他寫通用軟體客戶端的,大多是做企業項目時寫專用客戶端。
大概4-5年前吧疼訊曾經用WPF寫了個QQ,但是只實現了基本功能就已經比C++客戶端大好多了,而且運行緩慢,主要是太吃內存,而且那時WPF的優化還不充分。

最後我想補充下真正的UI庫之王,cocoa。
Apple的成功有很多原因,其中之一就是cocoa,cocoa理念十分先進,而且出來得早,我都懷疑Qt和WPF有不少思想都是借鑒cocoa的。
定義式的UI,用xib就可以定義UI的絕大部分細節,而且提供所見即所得的可視化設計工具。
嚴格的MVC,而且定義非常清晰,分工明確。
signal/slot,雖然不叫這個名字,但思想就是,而且真的是拖動滑鼠就能connect。
提供了ARC,閉包和反射,給UI開發帶來巨大的便利性,當然這得益於Objective-C這個語言。

再補充下 Borland的OWL和VCL。
我是從Borland C++3.0和Delphi 1.0開始用的,那時的Borland看來很有前途的,可惜後來一系列決策失誤導致現在這個公司幾乎消失了,同學們不要再往這個坑裡跳了。
OWL曾經和MFC是競爭對手,設計思想也差不多,個人感覺OWL的API設計更優雅一點,但是在市場上OWL被MFC徹底擊敗。
Delphi
是神作,它在RAD(快速應用開發)領域長時間沒有對手,直到BS架構取代CS架構。Delphi的特點就是簡單、開發快,單純就寫個基本可用的應用來
說,可能至今都沒有比他更快的,但是缺點就是丑,基本大多數Delphi應用都是一大堆控制項堆積在一起,很不美觀,另外由於Pascal語言的限制無法和
現有大量的C/C++代碼融合。雖然後來有C++
Builder,但是Builder里簡單和快的優點也消失了。Borland的C++編譯器越做越差,導致後來開源項目都不太願意兼容這個編譯器了。
VCL准確地說不是UI庫,而是一套組件介面規范,類似COM ActiveX。delphi和C++builder都是基於這個規范構建了基礎庫。

UI庫是個很大的話題,夠寫好幾本書來探討的,我這里就是隨便寫點自己的感受。
單純討論每個庫的優劣是沒有意義的,而是要放到具體的應用場景里來看,每個庫都有自己擅長的場景。

如果僅在Windows下,追求程序小巧,用WTL,不足的地方自己實現去吧,但是視覺效果就呵呵了。
如果可以大一點,還要好看點,那就Qt。
如果完全不在乎大小,只要視覺效果華麗,就用WPF,如果把開發工具價格也考慮進來,那麼土豪才會選WPF呢。
MFC就是個雞肋了,除非你現有的工程師不會用別的,或者有歷史遺留代碼要保持兼容。

如果要求跨平台,那麼就用Qt,wxWidgets和GTK+跟現在的Qt比起來沒有什麼優勢了。

如果是iOS Android,那麼最好用原生UI庫,除非你寫游戲。

㈦ 在linux下怎麼將資料庫里的信息顯示到窗體里的文本框里

你可以用 GTK 來寫一個訪問資料庫的程序把資料庫里的信息顯示到窗體里的文本框里,也可以用 PHP 來實現這工作,看你是熟悉 PHP 還是熟悉 C++ 編程了。當然,還有其它編程方法,如 perl 等,你熟悉哪種就用哪種方法。

㈧ 用gtk怎麼編寫一個資料庫

// 創建刪除資料庫的成功與否

void create_message_dialog(GtkMessageType type,gchar *message)

{

GtkWidget *dialogx;

/*gtk_message_dialog_new創建一個新的消息對話框,這是一個圖標表示對話框類型(錯誤,警告等)和一些文 本,用戶可能希望看到一個簡單的對話框。當用戶點擊一個按鈕一個「響應」信號被發射與GtkResponseType響應的ID*/

dialogx = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,type,GTK_BUTTONS_OK,message);

gtk_dialog_run(GTK_DIALOG(dialogx));

gtk_widget_destroy(dialogx);

}

void on_dialog_yes(GtkButton *button,gpointer data)

{

gchar query_buf[4096];

const gchar *dbname;

dbname = gtk_entry_get_text(GTK_ENTRY(entry));

if(iscreate == TRUE)

{

sprintf(query_buf,"CREATE DATABASE %s",dbname);

/*mysql_query() 向與指定的連接標識符關聯的伺服器中的當前活動資料庫發送一條查詢,如果沒有指定 link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數會嘗試無參數調用 mysql_connect() 函數來建立一個連接並使用之。查詢結果會被緩存。*/

if(mysql_query(sqlconnect,query_buf)==0)

{

create_message_dialog(GTK_MESSAGE_INFO,"創建資料庫成功");

}

else

{

create_message_dialog(GTK_MESSAGE_ERROR,"創建資料庫失敗");

}

}

else

{

sprintf(query_buf,"DROP DATABASE %s",dbname);

if(mysql_query(sqlconnect,query_buf)==0)

{

create_message_dialog(GTK_MESSAGE_WARNING,"資料庫已經被刪除!");

}

else

{

create_message_dialog(GTK_MESSAGE_ERROR,"刪除資料庫出錯!");

}

}

gtk_widget_destroy(dialog);

}

void on_dialog_no(GtkButton *button,gpointer data)

{

gtk_widget_destroy(dialog);

}

㈨ GTK編程密碼找回函數於資料庫連接代碼

自定義回調函數,捕捉最大化最小化信號,然後用自己的函數進行處理,就行了。
#include <stdio.h>
#include <gtk/gtk.h>
void callback(gpointer data)
{
GtkWidget *window=GTK_WIDGET(data);
switch(gdk_window_get_state(GDK_WINDOW(window->window)))
{
case 1<<0/* GDK_WINDOW_STATE_WITHDRAWN*/: printf("GDK_WINDOW_STATE_WITHDRAWN:the window is not shown.\n");break;
case 1<<1/* GDK_WINDOW_STATE_ICONIFIED*/: printf("GDK_WINDOW_STATE_ICONIFIED:the window is minimized.\n");break;//最小化處理
case 1<<2/* GDK_WINDOW_STATE_MAXIMIZED*/: printf("GDK_WINDOW_STATE_MAXIMIZED:the window is maximized.\n");break;//最大化處理
case 1<<3/* GDK_WINDOW_STATE_STICKY*/: printf("GDK_WINDOW_STATE_STICKY:the window is sticky.\n");break;
case 1<<4/* GDK_WINDOW_STATE_FULLSCREEN*/: printf("GDK_WINDOW_STATE_FULLSCREEN:the window is maximized without decorations.\n");break;
case 1<<5/* GDK_WINDOW_STATE_ABOVE*/: printf("GDK_WINDOW_STATE_ABOVE:the window is kept above other windows. \n");break;
case 1<<6/* GDK_WINDOW_STATE_BELOW*/: printf("GDK_WINDOW_STATE_BELOW:the window is kept below other windows. \n");break;
default:break;
}
}
int main(int argc,char *argv[])
{
gtk_init(&argc,&argv);
GtkWidget *window;
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
g_signal_connect_swapped(window,"window_state_event",
G_CALLBACK(callback),window);
gtk_main();
return 1;
}
有什麼問題可留言

㈩ 求一段gtk+2.0連接sqlite資料庫的例子實現簡單的插入查詢功能

int data_get(char*** result, int *row, int *column) {
char *zErrMsg = 0;
char *errmsg;
int i = 0;
data_open_db();//打開資料庫
i = sqlite3_get_table(db, "select id,name from student", result, row, column, &errmsg);//這里寫SQL語句。row是查詢出的行數,column是列數。這個例子用來讀取id與name,導入到gtk建立的treeview中。列數為2列,行數,我設定讀取100行。
data_close_db();//關閉資料庫
return i;
}
這是一條簡單的查詢語句,搜索id name。原理就這么簡單。我給你簡單注釋一下