• <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等多種語言 程序猿

            這個其實是一個線程安全的int mapper

            void alThunkInit(void);
            void alThunkExit(void);
            ALuint alThunkAddEntry(ALvoid 
            * ptr);
            void alThunkRemoveEntry(ALuint index);
            ALvoid 
            *alThunkLookupEntry(ALuint index);


            typedef 
            struct {
                ALvoid 
            *ptr;
                ALboolean InUse;
            } ThunkEntry;

            static ThunkEntry *g_ThunkArray;
            static ALuint      g_ThunkArraySize;

            static CRITICAL_SECTION g_ThunkLock;

            void alThunkInit(void)
            {
                InitializeCriticalSection(
            &g_ThunkLock);
                g_ThunkArraySize 
            = 1;
                g_ThunkArray 
            = calloc(1, g_ThunkArraySize * sizeof(ThunkEntry));
            }

            void alThunkExit(void)
            {
                free(g_ThunkArray);
                g_ThunkArray 
            = NULL;
                g_ThunkArraySize 
            = 0;
                DeleteCriticalSection(
            &g_ThunkLock);
            }

            ALuint alThunkAddEntry(ALvoid 
            *ptr)
            {
                ALuint index;

                EnterCriticalSection(
            &g_ThunkLock);

                
            for(index = 0;index < g_ThunkArraySize;index++)
                {
                    
            if(g_ThunkArray[index].InUse == AL_FALSE)
                        
            break;
                }

                
            if(index == g_ThunkArraySize)
                {
                    ThunkEntry 
            *NewList;

                    NewList 
            = realloc(g_ThunkArray, g_ThunkArraySize*2 * sizeof(ThunkEntry));
                    
            if(!NewList)
                    {
                        LeaveCriticalSection(
            &g_ThunkLock);
                        
            return 0;
                    }
                    memset(
            &NewList[g_ThunkArraySize], 0, g_ThunkArraySize*sizeof(ThunkEntry));
                    g_ThunkArraySize 
            *= 2;
                    g_ThunkArray 
            = NewList;
                }

                g_ThunkArray[index].ptr 
            = ptr;
                g_ThunkArray[index].InUse 
            = AL_TRUE;

                LeaveCriticalSection(
            &g_ThunkLock);

                
            return index+1;
            }

            void alThunkRemoveEntry(ALuint index)
            {
                EnterCriticalSection(
            &g_ThunkLock);

                
            if(index > 0 && index <= g_ThunkArraySize)
                    g_ThunkArray[index
            -1].InUse = AL_FALSE;

                LeaveCriticalSection(
            &g_ThunkLock);
            }

            ALvoid 
            *alThunkLookupEntry(ALuint index)
            {
                ALvoid 
            *ptr = NULL;

                EnterCriticalSection(
            &g_ThunkLock);

                
            if(index > 0 && index <= g_ThunkArraySize)
                    ptr 
            = g_ThunkArray[index-1].ptr;

                LeaveCriticalSection(
            &g_ThunkLock);

                
            return ptr;
            }
            用途比較廣
            posted @ 2015-06-29 13:24 ccsdu2009 閱讀(313) | 評論 (0)編輯 收藏
             
            class Widget : public QWidget
            {
                Q_OBJECT
            public:
                
            explicit Widget(QWidget *parent = 0);
                
            ~Widget();
            private:
                
            void resizeEvent(QResizeEvent* event);
            private:
                QStateMachine
            * mMachine;
                QSignalTransition
            * mTransition;
                QState
            * mMaxState;
                QState
            * mMinState;
                QPushButton
            * mButton;
                
            bool mResized;
            };

            Widget::Widget(QWidget *parent):
            QWidget(parent)
            {
                mResized 
            = false;
                resize(
            640,480);
            }

            Widget::
            ~Widget()
            {
            }

            void Widget::resizeEvent(QResizeEvent* event)
            {
                
            if(size().height() == 0)
                {
                    close();
                    
            return;
                }
                
            if(mResized)
                    
            return;

                mButton 
            = new QPushButton(this);
                mButton
            ->setText("Click");

                mResized 
            = true;
                QPoint p 
            = pos();
                QSize s 
            = size();

                mMachine 
            = new QStateMachine(this);
                mMaxState 
            = new QState(mMachine);
                mMaxState
            ->assignProperty(this,"geometry",QRect(p,s));
                
            //connect(mMachine,SIGNAL(finished()),this,SLOT(callClose()));
                
                mMinState 
            = new QState(mMachine);
                mMinState
            ->assignProperty(this,"geometry",QRect(p.x(),p.y()+s.height()/2,s.width(),0));
                
            //connect(mMinState,SIGNAL(entered()),this,SLOT(callClose()));
                mMachine->setInitialState(mMaxState);

                QPropertyAnimation
            * ani1 = new QPropertyAnimation(this,"geometry");
                ani1
            ->setDuration(300);
                ani1
            ->setEasingCurve(QEasingCurve::Linear);

                QSignalTransition
            * transition = mMaxState->addTransition(mButton,SIGNAL(clicked()),mMinState);
                transition
            ->addAnimation(ani1);

                mMachine
            ->start();
            }


            不過有2個問題,當動畫結束的時候,和這句相關
            connect(mMinState,SIGNAL(entered()),this,SLOT(callClose()));
            可以退出程序
            但是動畫沒執行 有空看下
            setSizeConstraint(QLayout::SetNoConstraint);
            posted @ 2015-01-02 21:23 ccsdu2009 閱讀(3396) | 評論 (0)編輯 收藏
             
                QSignalMapper* mapper = new QSignalMapper(this);
                for(int i=0;i<4;i++)
                {
                    QRadioButton
            * button = new QRadioButton();
                    
            if(i == 0)
                        button
            ->setChecked(true);
                    button
            ->setText(items[i+1]);
                    buttonlayout
            ->addWidget(button);
                    
                    mapper
            ->setMapping(button,i);
                    connect(button,SIGNAL(clicked()),mapper,SLOT(map()));
                }

                connect(mapper,SIGNAL(mapped(
            int)),this,SLOT(onClick(int)));
            posted @ 2014-12-14 18:47 ccsdu2009 閱讀(4413) | 評論 (0)編輯 收藏
             
                QFont font;
                font.setPointSize(
            18);
                painter.setFont(font);
                QFontMetrics fm 
            = painter.fontMetrics();

                QString list[] 
            = {"A","B","C","D","E"};
                
            for(int i=0;i<5;i++)
                {
                    
            int width = fm.width(list[i]);
                    
            int height = fm.ascent()+fm.descent();
                    
                    QPair
            <int,int> pos(mDatas[i]);
                    QRectF rect(pos.first
            -width/2,pos.second-height/2,width,height);
                    painter.drawText(rect,list[i]);
                }
            posted @ 2014-12-14 11:44 ccsdu2009 閱讀(7899) | 評論 (1)編輯 收藏
             
            class painter : public QWidget
            {
                Q_OBJECT
            public:
                painter(QWidget 
            *parent = 0, Qt::WFlags flags = 0);
                
            ~painter();
            private:
                
            void paintEvent(QPaintEvent* e);
                
            void clcPos(int x,int y,int r);
                
            void renderCircle(QPainter& painter,int x,int y,int r);
                
            void renderLine(int p1,int p2);
                
            void mousePressEvent(QMouseEvent*);
                
            void mouseReleaseEvent(QMouseEvent*);
                
            int  length(int x1,int y1,int x2,int y2);
                
            int  min(int x,int y,int& m);
            private:
                
            bool mMousePress;
                QVector
            <QPair<int,int> > mPosList;
            };

            #endif

            painter::painter(QWidget* parent,Qt::WFlags flags):
            QWidget(parent,flags)
            {
                setGeometry(100,100,640,480);
                setBackgroundRole(QPalette::Base);
                setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
                mMousePress = false;
            }

            painter::~painter()
            {
            }

            void painter::paintEvent(QPaintEvent* e)
            {
                mPosList.clear();

                int w = width();
                int h = height();

                float p = 3.14159265f;

                QPainter painter(this);
                painter.setRenderHint(QPainter::Antialiasing,true);

                for(int i=0;i<5;i++)
                {
                    float delta = p*0.4*i - .5*p;
                    
                    float cos = cosf(delta)*148;
                    float sin = sinf(delta)*148;
                    int x = w/2 + cos;
                    int y = h/2 + sin;
                    mPosList.push_back(QPair<int,int>(x,y));
                }

                renderLine(0,2);
                renderLine(1,3);
                renderLine(2,4);
                renderLine(3,0);
                renderLine(4,1);

                for(int i=0;i<5;i++)
                {
                    QPair<int,int> pos = mPosList[i];
                    renderCircle(painter,pos.first,pos.second,48);
                }
            }

            void painter::clcPos(int x,int y,int r)
            {
                mPosList.push_back(QPair<int,int>(x,y));
            }

            void painter::renderCircle(QPainter& painter0,int x,int y,int r)
            {
                QPainter painter(this);
                painter.setRenderHint(QPainter::Antialiasing,true);

                painter.setPen(QPen(Qt::blue,2,Qt::SolidLine));  
                painter.setBrush(QBrush(Qt::green,Qt::SolidPattern));
                painter.drawRoundRect(x-r/2,y-r/2,r,r,99,99);
            }

            void painter::mousePressEvent(QMouseEvent* e)
            {
                if(e->button() == Qt::LeftButton)
                {
                    mMousePress = true;
                    int x = e->x();
                    int y = e->y();
                    const int off2 = 48*48;
                    
                    int m = 9999;
                    int offset = min(x,y,m);
                    if(m < 36*36)
                        std::cout<<"here:"<<offset<<std::endl;
                }
            }

            int painter::min(int x,int y,int& m)
            {
                int offset = 0;
                for(int i=0;i<5;i++)
                {
                    QPair<int,int> pos(mPosList[i]);
                    int len = length(x,y,pos.first,pos.second);
                    if(len < m)
                    {
                        m = len;
                        offset = i;
                    }
                }
                return offset;
            }

            void painter::mouseReleaseEvent(QMouseEvent* e)
            {
                mMousePress = false;
            }

            int painter::length(int x1,int y1,int x2,int y2)
            {
                return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
            }

            void painter::renderLine(int p1,int p2)
            {
                QPair<int,int> pos1 = mPosList[p1];
                QPair<int,int> pos2 = mPosList[p2];

                float k = pos2.second - pos1.second;
                k /= (float)(pos2.first - pos1.first);
                std::cout<<k<<std::endl;

                QPainter painter(this);
                painter.setRenderHint(QPainter::Antialiasing,true);
                painter.setPen(QPen(Qt::blue,2,Qt::DotLine));
                painter.drawLine(pos1.first,pos1.second,pos2.first,pos2.second);
            }

            posted @ 2014-12-11 22:07 ccsdu2009 閱讀(2073) | 評論 (0)編輯 收藏
             
            class scrollTest : public QWidget
            {
                Q_OBJECT
            public:
                scrollTest(QWidget 
            *parent = 0, Qt::WFlags flags = 0);
                
            ~scrollTest();
            private:
                
            void createWidget();
                QWidget
            * createGroupBox(const QString& title,int n);
            };

            scrollTest::scrollTest(QWidget
            * parent,Qt::WFlags flags):
            QWidget(parent,flags)
            {
                createWidget();
            }

            scrollTest::
            ~scrollTest()
            {
            }

            void scrollTest::createWidget()
            {
                resize(
            300,360);

                QGridLayout
            * gridLayout = new QGridLayout(this);
                QScrollArea
            * scrollArea = new QScrollArea(this);
                
            //scrollArea->setWidgetResizable(false);
                
            //scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
                
                QWidget
            * scrollAreaWidgetContents = new QWidget();
                
            //scrollAreaWidgetContents->setGeometry(QRect(0, 0, 380, 251));
                scrollArea->setWidget(scrollAreaWidgetContents);

                gridLayout
            ->addWidget(scrollArea, 0012);

                QSpacerItem
            * horizontalSpacer = new QSpacerItem(298,20,QSizePolicy::Expanding,QSizePolicy::Minimum);
                gridLayout
            ->addItem(horizontalSpacer, 1011);

                QPushButton
            * pushButton = new QPushButton(this);
                pushButton
            ->setText("OK");
                gridLayout
            ->addWidget(pushButton, 1111);

                QWidget
            * content = new QWidget();
                content
            ->setMinimumHeight(280);
                
            //content->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed);
                
                QVBoxLayout
            * vlayout = new QVBoxLayout(content);
                
            //scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
                vlayout->addWidget(createGroupBox("box1",3));
                vlayout
            ->addWidget(createGroupBox("box2",5));
                vlayout
            ->addStretch(1);

                scrollArea
            ->setWidget(content);
                
            //scrollArea->setFixedHeight(420);
            }

            QWidget
            * scrollTest::createGroupBox(const QString& title,int n)
            {
                QGroupBox
            * box = new QGroupBox(title);
                QVBoxLayout
            * boxlayout = new QVBoxLayout(box);
                
            for(int i=0;i<n;i++)
                    boxlayout
            ->addWidget(new QRadioButton(QString("%1").arg(i)));

                
            return box;
            }
            posted @ 2014-12-04 13:54 ccsdu2009 閱讀(10959) | 評論 (1)編輯 收藏
             
            網上看到的例子都有點問題
            上一個我測試過的例子:
            #include <qtest.h>
            #include 
            <QObject>

            class shopTest : public QObject
            {
                Q_OBJECT
            private slots:
                
            void test();
            private:
                
            void test_discount();
                
            void test_item();
                
            void te函數st_coupon();
                
            void test_date();
            };
            經過測試 slots簇只有第一個函數會被執行到。
            void shopTest::test()
            {
            }

            void shopTest::test_discount()
            {
            }

            void shopTest::test_item()
            {
            }

            void shopTest::test_coupon()
            {
               ..
            }


            void shopTest::test_date()
            {
              ..
            }

            QTEST_MAIN(shopTest)
            posted @ 2014-11-20 20:53 ccsdu2009 閱讀(1991) | 評論 (0)編輯 收藏
             
            解決方案:如果從文本載入的話,確定文本為utf8編碼,然后調用
            QString text = QString::fromUtf8(file.readAll());即可
            posted @ 2014-11-09 19:10 ccsdu2009 閱讀(2016) | 評論 (0)編輯 收藏
             
            一直想做個類似matlab的軟件,支持矩陣運算,線代,微積分求解等功能
            大家有啥好的建議沒?

            去年業余主要開發了GAudio
            今年開發了華佗中藥大師業余版本,馬上就要出入門版本咯

            一直想靠寫軟件發財
            posted @ 2014-06-09 21:13 ccsdu2009 閱讀(2100) | 評論 (2)編輯 收藏
             
            基本用法如下:
                foreach(agentiaItem* item,mTree)
                {
                    QTreeWidgetItem
            * parent = new QTreeWidgetItem(QStringList(item->getItemName()));  
                    tree
            ->addTopLevelItem(parent); 

                    QStringList list 
            = item->getItemList();
                    
            foreach(QString item,list)
                    {
                        QTreeWidgetItem
            * child = new QTreeWidgetItem(QStringList(item));  
                        parent
            ->addChild(child);  
                    }
                }
            不過構造QTreeWidgetItem的時候,不太理解為什么要使用QStringList而不是QString?
            posted @ 2014-04-20 17:22 ccsdu2009 閱讀(1085) | 評論 (0)編輯 收藏
            僅列出標題
            共38頁: First 7 8 9 10 11 12 13 14 15 Last 
             
            久久精品成人欧美大片| 精产国品久久一二三产区区别| 国产精品成人精品久久久| 热久久最新网站获取| 99久久国产主播综合精品| 久久久一本精品99久久精品66 | 一级做a爰片久久毛片看看| 国产免费福利体检区久久| 亚洲国产成人久久精品影视| 久久精品国产91久久综合麻豆自制| 久久精品国产亚洲av麻豆色欲| 久久精品亚洲精品国产色婷| 99久久综合狠狠综合久久止| 2021久久精品国产99国产精品| 2021少妇久久久久久久久久| 66精品综合久久久久久久| 色综合久久中文综合网| 国产免费久久精品99久久| 久久综合久久综合亚洲| 午夜精品久久久久久久久| 国产韩国精品一区二区三区久久| 91精品国产色综久久| 亚洲国产天堂久久综合| 久久久久人妻一区二区三区vr| 国产午夜福利精品久久2021| 国产亚州精品女人久久久久久 | 亚洲国产成人精品无码久久久久久综合| 久久精品国产99久久久香蕉| 久久精品极品盛宴观看| 国产精品久久久久AV福利动漫| 国产成人精品久久亚洲高清不卡| 久久久久久亚洲精品影院| 久久精品9988| 少妇人妻综合久久中文字幕| 久久精品国产福利国产秒| 久久国产亚洲精品| 国产综合精品久久亚洲| 久久综合狠狠综合久久综合88| 久久国产视频99电影| 国产91色综合久久免费| 综合久久国产九一剧情麻豆|