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

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

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

一直想靠寫軟件發財
posted @ 2014-06-09 21:13 ccsdu2009 閱讀(2128) | 評論 (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 閱讀(1102) | 評論 (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>
            亚洲专区一二三| 久久久久久91香蕉国产| 亚洲风情亚aⅴ在线发布| 久久久91精品国产一区二区三区 | 欧美黄色一区二区| 亚洲国产一区在线| 亚洲黄色一区二区三区| 欧美精品一区二区三区四区| 亚洲精品一区久久久久久| 亚洲电影成人| 欧美日韩一区二区在线| 亚洲欧美一区二区激情| 亚洲欧美中文在线视频| 在线播放中文一区| 亚洲国产视频一区二区| 国产精品毛片a∨一区二区三区|国| 欧美一级大片在线观看| 久久先锋资源| 一本色道久久综合亚洲精品高清 | 老司机aⅴ在线精品导航| 久久久人成影片一区二区三区| 亚洲三级国产| 亚洲一区国产精品| 尤物在线观看一区| 洋洋av久久久久久久一区| 国产亚洲午夜高清国产拍精品| 美女主播视频一区| 欧美午夜精品理论片a级按摩 | 99国产精品99久久久久久粉嫩| 中国av一区| 亚洲电影中文字幕| 亚洲视频www| 亚洲国产精品va| 亚洲综合色婷婷| 亚洲激情校园春色| 欧美亚洲免费高清在线观看| 亚洲风情亚aⅴ在线发布| 亚洲视频在线观看三级| 亚洲国产日韩欧美一区二区三区| 在线亚洲观看| 亚洲第一网站免费视频| 亚洲视频一二区| 亚洲精品久久久久中文字幕欢迎你| 亚洲图片自拍偷拍| 99成人在线| 裸体女人亚洲精品一区| 欧美一区2区视频在线观看| 欧美精品免费看| 免费成人激情视频| 国产日韩视频| 亚洲一区二区在线观看视频| 一区二区三区波多野结衣在线观看| 久久精品国产第一区二区三区最新章节 | 亚洲视频网站在线观看| 久热精品在线| 久久免费视频网| 国产女人水真多18毛片18精品视频| 亚洲国产精品电影| 在线观看欧美精品| 欧美一区二区日韩| 亚洲欧美国产精品va在线观看 | 欧美承认网站| 欧美黑人一区二区三区| 国内精品久久久久久久果冻传媒| 亚洲一区免费观看| 亚洲一区二区三区三| 欧美人成网站| 亚洲精品资源| 中文亚洲字幕| 欧美色网一区二区| 一本色道久久| 午夜一区二区三区在线观看| 欧美视频中文字幕在线| 日韩一级精品| 亚洲欧美在线免费| 国产欧美日韩视频| 亚洲综合色噜噜狠狠| 欧美一区二区精品在线| 国产欧美日韩中文字幕在线| 亚洲免费在线播放| 久久精品亚洲| 在线精品国产成人综合| 狼人天天伊人久久| 亚洲日本视频| 亚洲欧美电影院| 国产亚洲激情在线| 久久久亚洲高清| 亚洲国产精品一区二区第四页av| 亚洲毛片在线| 国产精品久久久久久久久搜平片 | 欧美激情在线免费观看| 夜夜嗨一区二区三区| 性欧美大战久久久久久久久| 国产最新精品精品你懂的| 久久综合一区二区| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧美日韩国产另类专区| 国产日韩欧美日韩大片| 久久综合狠狠综合久久激情| 亚洲精品久久久久久下一站| 亚洲欧美日韩精品久久亚洲区 | av成人黄色| 国产精品视频区| 欧美成年人视频| 亚洲欧美国产毛片在线| 欧美黄色一级视频| 午夜精品一区二区三区四区| 国产在线视频欧美| 欧美人在线视频| 久久电影一区| 中文在线一区| 亚洲第一天堂av| 久久久久久亚洲精品杨幂换脸| 亚洲精品欧洲精品| 国产亚洲一本大道中文在线| 欧美福利视频网站| 久久精品国产99精品国产亚洲性色| 亚洲激情校园春色| 久久综合色天天久久综合图片| 夜夜嗨av一区二区三区网页| 国产一区二区中文字幕免费看| 欧美国产另类| 玖玖玖国产精品| 亚洲欧美激情一区| 日韩视频中文字幕| 欧美国产精品日韩| 久久免费视频网| 欧美在线视频a| 亚洲一区二区免费| 亚洲美女av黄| 亚洲国产精品悠悠久久琪琪 | 欧美精品福利视频| 久久精品在线视频| 亚洲欧美综合国产精品一区| 亚洲激情视频网| 亚洲二区在线视频| 欧美成人一区在线| 蜜桃av综合| 美日韩免费视频| 久久视频国产精品免费视频在线 | 国产一区日韩欧美| 国产伦精品一区二区三区在线观看 | 亚洲欧洲另类| 欧美激情在线播放| 欧美成人高清视频| 免费一级欧美在线大片| 久久综合图片| 久久人人超碰| 麻豆成人av| 欧美激情一区二区| 亚洲风情亚aⅴ在线发布| 欧美激情区在线播放| 亚洲丰满在线| 最新国产成人av网站网址麻豆| 欧美激情国产日韩| 亚洲欧洲免费视频| 一区二区三区四区五区视频| 一区二区三区视频在线播放| 在线亚洲欧美视频| 午夜伦理片一区| 久久精品91| 欧美成人午夜激情在线| 欧美精品啪啪| 国产精品美女久久久久久2018| 国产精品久久国产愉拍| 国产欧美一区二区三区沐欲| 国产一区二区三区不卡在线观看| 国产一区二区三区免费在线观看| 一区在线观看| 日韩亚洲欧美一区| 亚洲欧美日韩国产中文在线| 欧美一级二级三级蜜桃| 欧美 日韩 国产一区二区在线视频| 亚洲国产精品久久精品怡红院 | 久久免费国产| 亚洲国产一二三| 亚洲一区二区三区免费视频| 欧美一区二区三区在线免费观看| 久久亚洲欧洲| 欧美日韩另类综合| 国产一区二区剧情av在线| 91久久久国产精品| 亚洲自拍偷拍网址| 六月婷婷一区| 国产精品99久久久久久久vr| 久久www成人_看片免费不卡| 欧美高清视频免费观看| 国产精品美女一区二区| 亚洲精品乱码久久久久| 欧美在线视频免费| 亚洲国产精品热久久| 性18欧美另类| 欧美日韩精品在线视频| 亚洲高清精品中出| 欧美一区=区| 亚洲毛片一区二区| 免费观看成人| 国产亚洲精品成人av久久ww| 在线亚洲+欧美+日本专区| 免费观看在线综合|