青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

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

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

一直想靠寫軟件發財
posted @ 2014-06-09 21:13 ccsdu2009 閱讀(2124) | 評論 (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 閱讀(1100) | 評論 (0)編輯 收藏
僅列出標題
共38頁: First 7 8 9 10 11 12 13 14 15 Last 
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品www网站| 亚洲一区二区三区四区在线观看| 亚洲综合电影| 夜夜夜精品看看| 亚洲精品一区二区三区av| 亚洲电影专区| 最新亚洲视频| 亚洲人成在线观看| 一区二区三区成人| 香蕉尹人综合在线观看| 欧美一区二区三区免费观看视频| 亚洲一二三级电影| 久久www成人_看片免费不卡| 欧美国产日韩一区二区三区| 欧美成人精品在线播放| 欧美精品网站| 国产婷婷一区二区| 亚洲国产成人久久综合一区| 久久精品视频网| 亚洲午夜精品| 亚洲精品一区二区三| 日韩一区二区精品在线观看| 久久成人综合视频| 亚洲日韩第九十九页| 亚洲嫩草精品久久| 牛人盗摄一区二区三区视频| 国产精品yjizz| 亚洲日本欧美日韩高观看| 在线视频你懂得一区二区三区| 亚洲性视频h| 欧美激情在线有限公司| 亚洲区一区二区三区| 亚洲免费观看在线观看| 一区二区三区回区在观看免费视频| 久久久亚洲精品一区二区三区 | 激情欧美一区| 亚洲电影中文字幕| 在线综合亚洲| 快播亚洲色图| 男人的天堂亚洲在线| 亚洲伊人伊色伊影伊综合网| 久久久99爱| 国产精品视频最多的网站| 狠狠综合久久av一区二区小说| 久久精品欧美| 欧美大片免费久久精品三p | 午夜精品成人在线| 欧美大片免费久久精品三p| 亚洲五月六月| 国产精品swag| 欧美一区二区播放| 久久国产精品电影| 国产精品欧美一区喷水| 亚洲精品专区| 9l国产精品久久久久麻豆| 久久综合九色九九| 一区二区电影免费观看| 在线一区欧美| 国产精品高清免费在线观看| 亚洲精品一区二区三区蜜桃久| 亚洲美女诱惑| 国产视频久久久久| 你懂的视频欧美| 久久久久久久波多野高潮日日| 国产偷久久久精品专区| 亚洲大片一区二区三区| 欧美日韩高清在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 久久国内精品视频| 一本色道久久综合| 欧美一级理论片| 99在线视频精品| 欧美成人综合| 欧美一区二区免费| 欧美国产在线观看| 欧美一区中文字幕| 久久高清福利视频| 欧美日韩在线观看一区二区三区| 一区二区日韩欧美| 久久九九99视频| 美女被久久久| 国产精品久久久久久久午夜片| 牛人盗摄一区二区三区视频| 欧美高清不卡| 久久精品九九| 国产日产欧产精品推荐色 | 国产精品一区二区黑丝| 久久综合伊人77777| 国产精品久久| 亚洲欧美经典视频| 制服丝袜激情欧洲亚洲| 欧美激情精品久久久久久黑人| 亚洲观看高清完整版在线观看| 国产亚洲一区在线| 欧美中文在线免费| 久久久久成人精品| 亚洲二区视频| 欧美一区二区三区四区在线| 午夜精品国产| 在线精品视频一区二区| 久久岛国电影| 亚洲电影自拍| 国产精品二区在线| 性欧美xxxx视频在线观看| 久久久久国产一区二区三区四区| 精品不卡在线| 欧美三级视频在线| 亚洲自拍偷拍一区| 久久综合色8888| 亚洲欧美亚洲| 夜夜嗨av一区二区三区网站四季av| 久久综合网hezyo| 妖精成人www高清在线观看| 久久精品91| 亚洲天堂av综合网| 在线观看一区二区精品视频| 国产精品一区在线观看你懂的| 欧美一区二区三区免费观看| 亚洲第一精品电影| 欧美一区二区三区久久精品| 亚洲九九爱视频| 亚洲国产欧美日韩精品| 国产精品乱子久久久久| 欧美.www| 蜜桃av噜噜一区| 亚洲美女免费视频| 亚洲国产精品va在线观看黑人| 国产精品自在线| 国产精品久久久久av| 欧美视频精品在线观看| 欧美精品国产精品| 欧美四级电影网站| 国产精品视频yy9299一区| 欧美视频一区二区三区在线观看| 国产精品久久久久99| 国产精品影视天天线| 国内一区二区三区在线视频| 狠狠综合久久av一区二区小说 | 91久久久久久久久| 日韩小视频在线观看专区| 亚洲精品护士| 亚洲精品日韩在线| 一本一道久久综合狠狠老精东影业 | 一区二区国产在线观看| 免费观看日韩| 欧美在线观看视频一区二区| 国产精品成人一区二区网站软件 | 亚洲在线观看免费| 久久久亚洲午夜电影| 亚洲精品免费电影| 午夜精品久久久久久久久| 亚洲一区一卡| 欧美激情中文字幕在线| 国产精品欧美日韩一区二区| 亚洲免费观看在线视频| 久久福利视频导航| 亚洲男人影院| 黄色日韩在线| 亚洲韩国日本中文字幕| 久久不射网站| 精品99一区二区| 亚洲欧洲另类国产综合| 欧美www在线| 在线一区日本视频| 这里只有精品视频| 国产亚洲毛片在线| 亚洲国产精品久久久久久女王| 欧美三级视频在线观看| 欧美一区二区三区免费观看视频 | 欧美与欧洲交xxxx免费观看 | 亚洲国产女人aaa毛片在线| 欧美日韩精品一区二区| 午夜精品久久99蜜桃的功能介绍| 性做久久久久久久免费看| 亚洲成人影音| 亚洲天堂av高清| 一区二区三区日韩欧美精品| 久久精品亚洲一区| 一区二区欧美精品| 久久一区亚洲| 久久女同精品一区二区| 欧美日韩1080p| 亚洲精品123区| 欧美一区在线视频| 在线一区欧美| 欧美岛国激情| 亚洲六月丁香色婷婷综合久久| 一区视频在线看| 久久精品视频在线观看| 久久精品国产精品| 国产在线不卡| 免费在线观看日韩欧美| 91久久国产综合久久蜜月精品| 国产精品一区二区在线观看| 亚洲精一区二区三区| 亚洲精品视频在线播放| 欧美日韩亚洲一区二区三区| 亚洲三级影院| 欧美在线视频不卡| 亚洲高清精品中出|