• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

            比較簡單的辦法如下:
            QWidget *spacer = new QWidget(this);  
            spacer
            ->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);   
            toolBar
            ->addWidget(spacer); 
            但是如何右對齊的是一個自定義的復(fù)合控件,則無能為力,比如一個編輯框和一個搜索按鈕
            這種情況下可以使用QLayout和QSpacerItem即可完成,如下:   
            QWidget* searchWidget = new QWidget(this); 
            mToolbar
            ->addWidget(searchWidget);
            QHBoxLayout
            * searchLayout = new QHBoxLayout(searchWidget);
            QSpacerItem
            * spacer = new QSpacerItem(40,20,QSizePolicy::Expanding,QSizePolicy::Minimum);
            searchLayout
            ->addItem(spacer);
            mSearchButtonWidget 
            = new QPushButton(tr("搜索"),searchWidget);
            mSearchEditWidget 
            = new QLineEdit(searchWidget);
            mSearchEditWidget
            ->setMaximumWidth(120);
            searchLayout
            ->addWidget(mSearchEditWidget);
            searchLayout
            ->addWidget(mSearchButtonWidget);
            原因是QToolBar本身就是一個QWidget
            posted @ 2014-03-23 10:48 ccsdu2009 閱讀(3192) | 評論 (0)編輯 收藏
             
            腳本如下:
            from bs4 import BeautifulSoup

            def list_get(file):
                soup 
            = BeautifulSoup(open(file))
                alist 
            = soup.find_all('a',class_ = 'link')
                list 
            = []
                
            for i in alist:
                    list.append(i.
            get('href'));
                #
            for i in list:
                #    print(i)
                
            return list

            if __name__=="__main__":
                list_get(
            'List.htm')

            list_get函數(shù)返回的是list字符串對象
            其c語言調(diào)用的代碼如下:
            #include <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <Python.h>

            char* GDALPythonObjectToCStr(PyObject* pyObject);

            int main(int argc, char *argv[])
            {
                Py_Initialize();  
                
            if(!Py_IsInitialized())   
                {  
                    
            return -1;  
                }  
                
                PyRun_SimpleString(
            "import sys");
                PyRun_SimpleString(
            "sys.path.append('./script')");
                PyObject
            * pModule;
                PyObject
            * pDict;
                PyObject
            * pFunc;

                pModule 
            = PyImport_ImportModule("list");
                
            if(!pModule)
                {
                    printf(
            "can't find list.py");
                    system(
            "PAUSE"); 
                    getchar();
                    
            return -1;
                }
                
                pDict 
            = PyModule_GetDict(pModule);
                
            if(!pDict)
                {
                    
            return -1;
                }
                
                pFunc 
            = PyDict_GetItemString(pDict,"list_get");
                
            if(!pFunc || !PyCallable_Check(pFunc))
                {
                    printf(
            "can't find function [list_get]");
                    getchar();
                    
            return -1;
                }
                
                PyObject
            * args = PyTuple_New(1);
                PyTuple_SetItem(args,
            0,Py_BuildValue("s","List.htm"));
                PyObject
            * value = PyObject_CallObject(pFunc,args);
                
            int ret = PySequence_Check(value);
                printf(
            "check:%d\n",ret);
                
            int length = PySequence_Size(value);
                printf(
            "length:%d\n",length);
                
                
            int i = 0;
                
            for(;i<length;i++)
                {
                    PyObject
            * obj = PySequence_GetItem(value,i);  
                    
            //char* str = PyBytes_AS_STRING(obj);
                    char* str = GDALPythonObjectToCStr(obj);
                    printf(
            "link:%s\n",str);    
                    free(str);
                }
                
                Py_DECREF(args);
                Py_DECREF(pModule);
                Py_Finalize();    
                system(
            "PAUSE");    
                
            return 0;
            }

            /* Return a NULL terminated c String from a PyObject */
            /* Result must be freed with GDALPythonFreeCStr */
            char* GDALPythonObjectToCStr(PyObject* pyObject)
            {
            #if PY_VERSION_HEX >= 0x03000000
                
            if(PyUnicode_Check(pyObject))
                {
                    
            char *pszStr;
                    
            char *pszNewStr;
                    Py_ssize_t nLen;
                    PyObject
            * pyUTF8Str = PyUnicode_AsUTF8String(pyObject);
                    PyBytes_AsStringAndSize(pyUTF8Str,
            &pszStr,&nLen);
                    pszNewStr 
            = (char*)malloc(nLen+1);
                    memcpy(pszNewStr,pszStr,nLen
            +1);
                    Py_XDECREF(pyUTF8Str);
                    
            return pszNewStr;
                }
                
            else if(PyBytes_Check(pyObject))
                {
                    
            char *pszStr;
                    
            char *pszNewStr;
                    Py_ssize_t nLen;
                    PyBytes_AsStringAndSize(pyObject,
            &pszStr,&nLen);
                    pszNewStr 
            = (char*)malloc(nLen+1);
                    memcpy(pszNewStr,pszStr,nLen
            +1);
                    
            return pszNewStr;
                }
                
            else
                {
                    
            char *pszStr = (char*)malloc(1);
                    pszStr[
            0= '\0';
                    
            return pszStr;
                }
            #else
                
            return PyString_AsString(pyObject);
            #endif
            }
            posted @ 2013-12-07 15:48 ccsdu2009 閱讀(933) | 評論 (0)編輯 收藏
             
            不得不承認(rèn),有時候使用python比c++方便很多,
            就拿解析html來說,使用 Beautiful Soup 就比使用libtidy方便很多 - 當(dāng)然也有可能是
            Beautiful Soup封裝的很厲害吧

            使用Beautiful Soup的一個例子如下:
            from bs4 import BeautifulSoup

            soup 
            = BeautifulSoup(open('List.htm'))
            for a in soup.find_all('a',class_ = 'link'):
                
            print (a.get('href'))
            目的是找出html中class屬性為link的a節(jié)點對應(yīng)的href屬性字符串
            如果是使用c++ libtidy的話
            對應(yīng)的代碼如下:
            Bool TIDY_CALL tidyFilterCb(TidyDoc tdoc,TidyReportLevel lvl,uint line,uint col,ctmbstr mssg)
            {  
                
            return no;
            }

            void extractContent(TidyNode node,TidyDoc doc);

            void parseContent(TidyNode node,TidyDoc doc)
            {   
                TidyNode child;
                
            for(child = tidyGetChild(node);child;child = tidyGetNext(child))
                {   
                    
            if(tidyNodeIsA(child))                    
                        extractContent(child,doc);
                    
            else
                        parseContent(child,doc);     
                }
            }

            void extractContent(TidyNode node,TidyDoc doc)
            {   
                
            if(yes == tidyNodeIsA(node))
                {   
                    TidyAttr cls 
            = tidyAttrGetCLASS(node);
                    
            if(cls != NULL)
                    {   
                        
            char* value = (char*)tidyAttrValue(cls);
                        
            if(!strcmp(value,"link"))
                        {   
                            TidyAttr href 
            = tidyAttrGetHREF(node);   
                            
            if(href != NULL)
                            {
                                
            char* link = (char*)tidyAttrValue(href);
                                printf(
            "link:%s\n",link);
                                
            return;
                            }
                        }
                    } 
                }   
                parseContent(node,doc);
            }

            void tidyParseHtml(char* file)
            {
                TidyDoc doc 
            = tidyCreate();
                tidySetReportFilter(doc,tidyFilterCb);
                tidyParseFile(doc,file);
                TidyNode body 
            = tidyGetBody(doc);
                TidyNode child;
                
            for(child = tidyGetChild(body);child;child = tidyGetNext(child))
                {   
                    parseContent(child,doc);
                }    
                tidyRelease(doc); 
            }
            還是很啰嗦的

            當(dāng)然下面的python代碼也能完成任務(wù):
            from bs4 import BeautifulSoup

            soup 
            = BeautifulSoup(open('List.htm'))
            list 
            = soup.select('a[class="link"]')
            for a in list:
                
            if a.has_attr('href'):
                    print (a.
            get('href'))
            如果想分析網(wǎng)頁我覺得BeatifulSoup絕對是一個利器
            鏈接:
            http://www.crummy.com/software/BeautifulSoup/bs4/doc/
            posted @ 2013-12-07 11:17 ccsdu2009 閱讀(1849) | 評論 (0)編輯 收藏
             
            gaudio是一個基于C/C++混合編程的跨平臺音頻庫,當(dāng)前支持windows32/64操作系統(tǒng)和linux32位操作系統(tǒng)

            當(dāng)前性能:
            1.最大支持音源同時播放的格式-8
            2.單音源最大掛載的音效個數(shù)-8
            3.全局最大可掛載的音效個數(shù)-8
            4.當(dāng)前支持語言C/C++/C#
            5.當(dāng)前支持的OS Win32/Win64/Linux32
            6. 當(dāng)前支持的音效-Fade in,Fade Out,Bassboost,Speed Changer,Echo,3D Effect, Doppler, Phaser, Channel Merget, Channel Swap,  Fft, Distortion, Foldback Distortion, Modulator, AutoWah 等
            7.當(dāng)前支持的解碼格式 - WAV, AU, AIFF, OGG, MOD,IT,XM,S3M,WV,MPC,WV,TTA,MP3,MIDI,FLAC
            8.支持的編碼格式 - WAV,AU,AIFF,OGG,MP2,MP3,FLAC,AAC,WV,VOC,CAF
            9.支持的音頻加載模式 - 文件加載,內(nèi)存加載,虛擬文件加載
            10.支持PAN,環(huán)繞音,全音量,音源音量設(shè)置

            下一步計劃:
            1.DEPHI綁定
            2.MAC OS支持
            3.Flanger,Chorus音效
            4.TAK,AAC格式
            5.故障處理

            遠(yuǎn)景:
            1.支持所有平臺和手持設(shè)備
            2.支持常見的所有音頻格式
            3.支持常見的所有音效
            4.提高最易用最方便的API接口

            一個使用的小例子:
            /*
                GAudio 2.1.0.1, (C)2013 by Eric Du(E)
                This program is a part of the GAudio SDK.
                Use GAudio's echo effect
            */
            #include 
            <stdlib.h>
            #include 
            <conio.h>
            #include 
            <stdio.h>
            #include 
            "gaudio.h"

            int main(int argc,char* argv[])
            {
                printf(
            "echo created by D.Eric\n");

            #if(defined(WIN32) || defined(WIN64))
                gaudio_init(
            "addons");
            #else
                gaudio_init(
            "/usr/local/lib/gaudio/");
            #endif

                
            const char* filename = "..\\media\\hurnscald.ogg";

                gsource
            * source = gaudio_source_create_from_file(filename,FALSE);
                
            if(source == NULL)
                {
                    printf(
            "load file:%s error!\n",filename);
                    printf(
            "bad source.\nerror code:%d.\n",gaudio_error_get());
                    gaudio_deinit();
                    
            return -1;
                }

                gaudio_source_set_int32(source,AUDIO_ENUM_LOOP,FALSE);
                printf(
            "play filename:%s\n",filename);

                geffect
            * effect = gaudio_effect_create(AUDIO_EFFECT_ECHO,0);
                
            if(!effect)
                {
                    printf(
            "not support echo effect\n");
                    gaudio_source_destroy(source);
                    gaudio_deinit();
                    
            return -1;
                }

                gaudio_effect_set_float(effect,AUDIO_EFFECT_ECHO_DELAY,
            1.0f);
                gaudio_effect_set_float(effect,AUDIO_EFFECT_ECHO_DECAY,
            0.6f);

                gaudio_effect_bind(effect,
            0);
                gaudio_source_play(source,FALSE);

                printf(
            "\nplaying, press any key to quit.\n");
                getch();

                gaudio_effect_unbind(effect);
                gaudio_effect_destroy(effect);

                gaudio_source_stop(source);
                gaudio_source_destroy(source);

                gaudio_deinit();
                system(
            "PAUSE");
                
            return EXIT_SUCCESS;
            }

            這個代表了我當(dāng)前對音頻這塊的了解程度
            下載在這里:download
            歡迎提意見啊.
            posted @ 2013-11-26 19:53 ccsdu2009 閱讀(2240) | 評論 (1)編輯 收藏
             
                 摘要: 1.Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/* === Shared === */QStackedWidget, QLabel, QPushButton, QRadioBu...  閱讀全文
            posted @ 2013-10-31 21:08 ccsdu2009 閱讀(5835) | 評論 (0)編輯 收藏
             
            發(fā)現(xiàn)一個問題imageView.startAnimation啟動控件動畫以后
            由于一些原因需要設(shè)置控件為GONE狀態(tài),也就是imageView.setVisibility(View.GONE);
            之后發(fā)現(xiàn)控件處于GONE狀態(tài),但是控件還是可見的
            上網(wǎng)查了下發(fā)現(xiàn)要清空動畫,也就是imageView.clearAnimation

            其實我覺得如果調(diào)用setVisibility(View.GONE)之后無論當(dāng)前有無動畫都應(yīng)該消失
            設(shè)置為GONE狀態(tài)后控件狀態(tài)出現(xiàn)異常

            按照當(dāng)前情況要隱藏控件需要先調(diào)用cleanAnimation,之后call setVisibility
            所以有空想想android API也并非十全十美.
            各位覺得呢?
            posted @ 2013-10-30 22:26 ccsdu2009 閱讀(4386) | 評論 (0)編輯 收藏
             
            截圖如下:
            2013年10月6日星期日

            代碼見附件:
            /Files/gaimor/GPlayer.zip
            posted @ 2013-10-06 20:09 ccsdu2009 閱讀(2083) | 評論 (2)編輯 收藏
             
                 摘要: 之前寫了一個dll,具體在這里http://www.shnenglu.com/gaimor/anarchive/2013/07/11/201711.html現(xiàn)在想增加一個c#綁定,上網(wǎng)搜了下很簡單就實現(xiàn)了實現(xiàn)后的cs代碼如下(當(dāng)前只實現(xiàn)了一部分):Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Co...  閱讀全文
            posted @ 2013-09-13 20:55 ccsdu2009 閱讀(3637) | 評論 (0)編輯 收藏
             
            1. -static-libstdc++ for libstdc++-6.dll
            2. -static-libgcc for libgcc_s_dw2-1.dll
            posted @ 2013-08-05 21:10 ccsdu2009 閱讀(431) | 評論 (0)編輯 收藏
             
            直接上代碼:
            #include <stdio.h>
            #include 
            <ao/ao.h>
            #include 
            "mpg123.h"

            int main(int argc, char *argv[])
            {   
                ao_initialize();
                    
                mpg123_handle 
            *mpg123 ;
                
            int iMpg123_error;
                
            if(MPG123_OK != (iMpg123_error = mpg123_init()))
                {
                    printf(
            "failed to init mpg123\n");
                    
            return -1;
                }

                mpg123 
            = mpg123_new(mpg123_decoders()[0], &iMpg123_error);
                
            if(MPG123_OK != (iMpg123_error = mpg123_open(mpg123,argv[1])))
                {
                    fprintf(stderr,
            "error in open mp3 file\n");
                    
            return -1;
                }
                
                
            int rate,channel,encoding;
                mpg123_getformat(mpg123,
            &rate,&channel,&encoding);
                
               
            int default_driver = ao_default_driver_id();
                ao_sample_format format;
                memset(
            &format,0,sizeof(format));
                format.bits 
            = 16;
                format.channels 
            = channel;
                format.rate 
            = rate;
                format.byte_format 
            = AO_FMT_LITTLE;
                
                ao_device 
            *device; 
                device 
            = ao_open_live(default_driver,&format,NULL);
                
            if(device == NULL) 
                {
                    fprintf(stderr,
            "error opening device.\n");
                    
            return 1;
                }
                
                
            short buffer[4096];
                
                
            int read = 0;
                
            while(1)
                {
                    mpg123_read(mpg123,buffer,
            4096,&read);
                    
            if(read == 0)
                        
            break;
                    ao_play(device,buffer,read);    
                }

                mpg123_close(mpg123);

                ao_close(device);
                ao_shutdown();
                
            return 0;
            }
            posted @ 2013-08-04 12:12 ccsdu2009 閱讀(851) | 評論 (0)編輯 收藏
            僅列出標(biāo)題
            共38頁: First 8 9 10 11 12 13 14 15 16 Last 
             
            色偷偷偷久久伊人大杳蕉| 国产韩国精品一区二区三区久久| 无码人妻少妇久久中文字幕| 久久99精品国产麻豆宅宅| 国产精品久久久久久久久免费| 久久精品成人一区二区三区| 欧美喷潮久久久XXXXx| 久久久久无码专区亚洲av| 综合网日日天干夜夜久久| 国产精品久久久久久| 欧美成人免费观看久久| 久久青草国产精品一区| 国产69精品久久久久观看软件| 91精品国产色综合久久| 免费无码国产欧美久久18| 精品九九久久国内精品| 亚洲国产精品婷婷久久| 亚洲中文字幕无码久久精品1| 99久久国产综合精品成人影院| 久久人人爽人人爽人人片AV麻烦| 大蕉久久伊人中文字幕| 国内精品久久国产大陆| 精品无码久久久久国产动漫3d| 99久久精品国产一区二区| 久久狠狠高潮亚洲精品| 久久99精品久久久大学生| 狠狠色丁香久久婷婷综合_中 | 日本一区精品久久久久影院| 7777精品伊人久久久大香线蕉| 91亚洲国产成人久久精品| 国内精品久久久久久99蜜桃| 女人高潮久久久叫人喷水| 国产精品一区二区久久精品无码 | 91精品国产91热久久久久福利| 亚洲色欲久久久综合网东京热| 思思久久99热免费精品6| 国内精品伊人久久久久影院对白| 久久99国产精品99久久| 精品国产乱码久久久久久1区2区| 九九久久自然熟的香蕉图片| 狠狠干狠狠久久|