Qt是一個使用C++開發(fā)的界面框架,可以直接使用C++的循環(huán)語句,比如for、while等。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的桐城網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
Qt同時提供了一個foreach語句用于擴充C++的循環(huán)。你完全可以使用for和while實現(xiàn)foreach的功能,不過foreach能夠更加簡便一些。
foreach(variables ,container)關(guān)鍵字是Qt對c++的一個擴展,主要用于按順序歷經(jīng)容器(container)中的對象,例如:
QLinkListQString list;
QString str;
foreach(str , list) {
qDebug()str;
}
這樣就可以歷經(jīng)list里存儲的對象了,它的作用相當于標準C++中的iterator
QLinkListQString list;
QLinkListIteratorQString i(list);
while(i.hasNext()) {
qDebug()i.next();
}
具體內(nèi)容你可以查看Qt的幫助文檔來學習,Qt的幫助文檔寫的非常詳細,而且附帶有大量示例代碼。
能使用是能使用,但是我在使用的時候很奇怪,在程序運行完成之后才把所有printf的語句打印出來。一般在qt中都使用qDebug。
C source file的實現(xiàn)。
#include "obj.h"
int main(const int argc, const char **argv){
void *temp_obj = getObj(100);
printString(temp_obj);//實現(xiàn)C語言調(diào)用QT/C++UI界面
return (0);
}
寫一個C++ source file和c source file都可以共同包含的頭文件,如下所示。
#include stdint.h
#ifdef __cplusplus
class Obj{
public:
Obj(int32_t a=50)
~Obj();
std::string toString();
private:
int32_t k;
};
#endif
#ifdef __cplusplus
extern "C" {
#endif
void* getObj(int32_t a);
void destroyObj(void *obj);
void printString(void *obj);
#ifdef __cplusplus
}
#endif
C++ source file的實現(xiàn),其中C語言函數(shù)是供C source file調(diào)用的。
#include iostream
#include sstream
#include iomanip
#include stdint.h
#include "obj.h"
Obj::Obj(int32_t a){
k = a 1;
}
Obj::~Obj(){
/* don't really need to do anything here */
/* k = 0 only for example purposes */
k = 0;
}
std::string Obj::toString(){
std::ostringstream os;
os "Obj is currently: " this-k std::endl;
return os.str();
}
void* getObj(int32_t a){
Obj *out = new Obj(a);
return ((void*)out);
}
void destroyObj(void* obj){
delete (((Foo*)obj));
}
void printString(void *obj){
std::string s = ((Obj*)obj)-toString();
std::cout s;
}
Makefile
make file的實現(xiàn)。
CC ?= gcc
CXX ?= g++
CFLAGS = -O0 -g
CXXFLGS = -00 -g
OBJ = main obj
OBJS = $(addsuffix .o,$(OBJ))
all:
make compile
compile:
make $(OBJS)
make objexe
fooexe: $(OBJS)
$(CXX) -o fooexe $(OBJS)
main.o: main.c
$(CC) -c -o main.o main.c
obj.o: obj.cpp
$(CXX) -c -o obj.o obj.cpp
clean:
rm -rf $(OBJS) objexe *.dSYM
如果你實在想用qt又要用c/c++標準庫,那么 qt for vs 倒是一個不錯的選擇,可惜貌似你在Linux使用的。程序編譯出錯,很有可能是因為找不到你用到某些函數(shù)的頭/庫文件。
不過你既然都用到qt了,建議還是用qt提供的一整套機制來實現(xiàn)你的程序,對于你問題中提到的需求,可以有下面的解決方式:
用QDir類可以實現(xiàn)對所有目錄/文件的遍歷操作,
用QFile/QTextStream可以實現(xiàn)對文件讀寫的操作等。
qt提供的接口都很友好,你稍微看一下qt的幫助文檔就知道應該怎么用了。不過如果你是想把一個C語言做的項目用qt重做的話,那就當我什么都沒有說了~
這跟函數(shù)沒關(guān)系,qt中發(fā)送信號用emit 信號 就可以了,例如我定義了一個信號為void test();那么我想觸發(fā)此信號只需要執(zhí)行emit test();就可以了。
網(wǎng)站題目:qt中的c語言函數(shù) qt 函數(shù)
本文路徑:http://chinadenli.net/article44/doojoee.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、建站公司、響應式網(wǎng)站、網(wǎng)站改版、ChatGPT、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)