LIULIANG

SQL Server JDBC驱动中sqljdbc和sqljdbc4区别

  为了支持向后兼容以及可能的升级方案,JDBC Driver 2.0 在每个安装包中都包括 2 个 JAR 类库:sqljdbc.jar 和 sqljdbc4.jar。本文将介绍SQL Server JDBC驱动中sqljdbc和sqljdbc4的区别。

sqljdbc.jar 类库提供对JDBC 3.0 的支持。

sqljdbc.jar 类库要求使用 5.0 版的 Java 运行时环境 (JRE)。连接到数据库时,在 JRE 6.0 上使用 sqljdbc.jar 会引发异常。

注意: SQL Server JDBC Driver 2.0 不支持 JRE 1.4。使用 SQL Server JDBC Driver 2.0 时必须将 JRE 1.4 升级至 JRE 5.0 或更高版本。在某些情况下,您可能需要重新编译应用程序,因为它可能与 JDK 5.0 或更高版本不兼容。有关详细信息,请参阅 Sun Microsystems 网站上的文档。

sqljdbc4.jar 类库提供对 JDBC 4.0 的支持。它不仅包括 sqljdbc.jar 的所有功能,还包括新增的 JDBC 4.0 方法。

sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。在 JRE 1.4 或 5.0 上使用 sqljdbc4.jar 会引发异常。
注意: 如果应用程序必须在 JRE 6.0 上运行,即使该应用程序不使用 JDBC 4.0 功能,也应使用 sqljdbc4.jar。

请注意,尽管驱动程序旨在与所有主要的 Sun 等效 Java 虚拟机一起工作并由这些虚拟机支持,但却是在 Sun JRE 5.0 或更高版本上进行测试的。

SQL Server JDBC Driver 专为使用 SQL Server 2005 引入的功能而设计,但它也可以向后兼容 SQL Server 2000(包括 64 位版本)。

重要提示: Microsoft SQL Server JDBC Driver 2.0 可以连接到 SQL Server 2008,但不完全支持 SQL Server 2008 中新引入的数据类型或其他功能。

转自:http://developer.51cto.com/art/200907/137813.htm

posted @ 2012-05-18 14:10 BIG森林 阅读(240) | 评论 (0)编辑 收藏

ubuntu opera问题解决--E: 软件包 opera 需要重新安装,但是我无法找到相应的安装文件。

前几天因感受到ubuntu中firefox太不給力,于是下了个opera11.1的安装包向爽一下,结果美梦半路夭折,今天因安装gfortran困扰在opera的半成品上,不得不解决这个问题!!

步骤如下:

1。E: 软件包 opera 需要重新安装,但是我无法找到相应的安装文件。

用了很多办法都不理想,没有解决问题

2。ubuntu 清理缓存

    apt-get autoclean
    apt-get clean
    apt-get autoremove


用了以上3条命令,无果,其中最后一条有反应了,忘了什么反应了。感叹下ubuntu 确实好用,可惜我还不够级别来使你臣服阿!

3。搜索关键此:ubuntu opera安装

想重新安装下,覆盖掉,不行阿,ubuntu 太严密了!

 

4。打开新立德软件库,出现以下内容:E: 软件包 opera 需要重新安装,但是我无法找到相应的安装文件。 E: 打开高速缓存(1)时有内部错误。请报告。

找到最终解决方案:命令:sudo dpkg --remove --force-remove-reinstreq opera

当然这个要在关闭新历得软件库之后,不然会报错:dpkg: 另外一个进程已经为状态数据库加了锁。

 

 

 

还好终于搞定了,真是的,我的主要任务可不是高opera!!fortran去了!

posted @ 2012-05-15 22:43 BIG森林 阅读(810) | 评论 (1)编辑 收藏

Unable to locate package错误解决办法

  最近刚开始接触Linux,在虚拟机中装了个Ubuntu,当前的版本是Ubuntu 11.10,装好后自然少不了安装一些软件,在设置了软件的源后,就开始了 sudo apt-get install,结果出现了下面的Unable to locate package错误:

  1. letuknowit@ubuntu:~$ sudo apt-get install mysql-server mysql-client
  2. [sudo] password for letuknowit:
  3. Reading package lists… Done
  4. Building dependency tree    
  5. Reading state information… Done
  6. E: Unable to locate package mysql-server
  7. E: Unable to locate package mysql-client
  8. letuknowit@ubuntu:~$

  这叫一个郁闷啊,出师不利,不带这么吓唬刚玩Ubuntu的小朋友吧~于是赶紧找资料,又回顾下前面的操作,最后发现问题出在执行sudo apt-get install之前更换了软件源,但是却忘了update下了,于是执行下面的命令:

  1. sudo apt-get update

等上面命令执行完后,再执行sudo apt-get install就可以了!其实错误信息已经很明确了,Unable to locate packet就是无法找到包嘛,那还不赶紧sudo apt-get update下!


转自:Coding Ants » Linux新手入门:Unable to locate package错误解决办法

posted @ 2012-05-15 22:43 BIG森林 阅读(501) | 评论 (0)编辑 收藏

Qt学习笔记(Qt3库)下

9-1.cpp

#include <qapplication.h>

#include <qwidget.h>

#include <qpainter.h>

 

class MyMainWindow:public QWidget

{

    public:

        MyMainWindow();

    private:

        void paintEvent(QPaintEvent *);

        QPainter *paint;

};

//此函数是由系统调用的,每当第一次生成或被挡住,它都会再次被调用

void MyMainWindow::paintEvent(QPaintEvent *)

{

    //此句最好做成局部变量的定义,否则将导致重复申请动态内存

    paint=new QPainter;

 

    paint->begin(this);

    //设置边框颜色、线形和线的宽度

    paint->setPen(QPen(blue,10,QPen::SolidLine));

    //设置边框内部颜色全部填充为红色

    paint->setBrush(QBrush(red,SolidPattern));

    //绘制矩形

    paint->drawRect(20,20,160,160);

    //绘图介绍

    paint->end();

}

 

MyMainWindow::MyMainWindow()

{

    //设置主窗口坐标位置、大小

    setGeometry(100,100,200,200);

}

 

int main(int argc,char **argv)

{

    QApplication a(argc,argv);

    MyMainWindow w;

    a.setMainWidget(&w);

    w.show();

    a.exec();

}

//**************************************************************

对上一个例子做一个扩展,画一个4*4棋盘

9-1-1.cpp

#include <qapplication.h>

#include <qwidget.h>

#include <qpainter.h>

 

class MyMainWindow:public QWidget

{

    public:

        MyMainWindow();

    private:

        //绘图函数声明

        void paintEvent(QPaintEvent *);

        QPainter *paint;

};

 

void MyMainWindow::paintEvent(QPaintEvent *)

{

    int i;

    int x=20,y=20;

    paint=new QPainter;

 

    paint->begin(this);

    paint->setPen(QPen(blue,4,QPen::SolidLine));

    paint->setBrush(QBrush(white,SolidPattern));

    //画5条横线

    for(i=0;i<5;i++)

    {

        paint->drawLine(20,y+80*i,340,y+80*i);

    }

    //画5条竖线

    for(i=0;i<5;i++)

    {

        paint->drawLine(x+80*i,20,x+80*i,340);

    }

    在棋盘正中做两个红棋子

    paint->setBrush(QBrush(red,SolidPattern));

    paint->drawEllipse(100,100,80,80);

    paint->drawEllipse(180,180,80,80);

    在棋盘正中做两个蓝棋子

    paint->setBrush(QBrush(green,SolidPattern));

    paint->drawEllipse(180,100,80,80);

    paint->drawEllipse(100,180,80,80);

   

    paint->end();

}

 

MyMainWindow::MyMainWindow()

{

    setGeometry(100,100,400,400);

}

 

int main(int argc,char **argv)

{

    QApplication a(argc,argv);

    MyMainWindow w;

    a.setMainWidget(&w);

    w.show();

    a.exec();

}

//**************************************************************

在主窗口上加一个标签,在标签上做出一个动画。

15-1.h

#include <qapplication.h>

#include <qwidget.h>

#include <qlabel.h>

#include <qmovie.h>

#include <qpushbutton.h>

#include <qfont.h>

#include <qlayout.h>

 

class MyMainWindow:public QWidget

{

    //宏定义

    Q_OBJECT;

    public:

        MyMainWindow(char *);

        QMovie movie;   //定义动画的对象

    public slots:

        void UnPause(); //继续播放

        void Pause();   //暂停

        void addSpeed();        //加速动画的播放速度

        void decSpeed();        //减慢动画的播放速度

    private:

        unsigned long num;

        QLabel *label;

        QPushButton *b1;

        QPushButton *b2;

        QPushButton *b3;

        QPushButton *b4;

        QPushButton *b5;

};

15-1.cpp

#include "15-1.h"

 

void MyMainWindow::UnPause()

{

    movie.unpause();    //继续播放

}

 

void MyMainWindow::Pause()

{

    movie.pause();  //暂停播放

}

 

void MyMainWindow::addSpeed()

{

    num+=20;

    movie.setSpeed(num);        //以20%增加速度

}

 

void MyMainWindow::decSpeed()

{

    num-=20;

    movie.setSpeed(num);        //以20%减少

}

//str里存放动画的文件名

MyMainWindow::MyMainWindow(char *str):movie(str)   

{

    setGeometry(100,100,300,280);

    num=100;        //初始速度为100

 

    b1=new QPushButton("Continue!",this);

    b1->setGeometry(130,20,120,40);

    b1->setMinimumSize(40,20);

    b1->setFont(QFont("Times",18,QFont::Bold));

   

    b2=new QPushButton("Pause!",this);

    b2->setGeometry(130,70,120,40);

    b2->setMinimumSize(40,20);

    b2->setFont(QFont("Times",18,QFont::Bold));

   

    b3=new QPushButton("Hurry!",this);

    b3->setGeometry(130,120,120,40);

    b3->setMinimumSize(40,20);

    b3->setFont(QFont("Times",18,QFont::Bold));

   

    b4=new QPushButton("Slow!",this);

    b4->setGeometry(130,170,120,40);

    b4->setMinimumSize(40,20);

    b4->setFont(QFont("Times",18,QFont::Bold));

   

    b5=new QPushButton("Quit!",this);

    b5->setGeometry(130,220,120,40);

    b5->setMinimumSize(40,20);

    b5->setFont(QFont("Times",18,QFont::Bold));

   

    label=new QLabel(this);

    label->setGeometry(10,10,120,60);

    label->setMovie(movie);

   

    QVBoxLayout *vbox=new QVBoxLayout(this);

    vbox->addWidget(label);

    vbox->addWidget(b1);

    vbox->addWidget(b2);

    vbox->addWidget(b3);

    vbox->addWidget(b4);

    vbox->addWidget(b5);

   

    connect(b1,SIGNAL(clicked()),this,SLOT(UnPause()));

    connect(b2,SIGNAL(clicked()),this,SLOT(Pause()));

    connect(b3,SIGNAL(clicked()),this,SLOT(addSpeed()));

    connect(b4,SIGNAL(clicked()),this,SLOT(decSpeed()));

    connect(b5,SIGNAL(clicked()),qApp,SLOT(quit()));

 

}

 

int main(int argc,char **argv)

{

    QApplication a(argc,argv);

   //给构造函数发送动画名,并且文件必须使.gif格式

    MyMainWindow w("trolltech.gif");   

    a.setMainWidget(&w);

    w.show();

    a.exec();

}



转自:http://blog.sina.com.cn/s/blog_5eedcb760100cdp3.html

posted @ 2012-05-13 23:23 BIG森林 阅读(419) | 评论 (0)编辑 收藏

Qt学习笔记(Qt3库)上

Qt学习笔记(Qt3库)

//**************************************************************

3.1创建第一个主部件

   创建主部件的方法是基于QWidget或QDialog类创建一个用户类。可以使用用户类通过公有继承派生于QWidget类,在其中调用一些成员函数来定义窗口外观。

题目要求:创建一个空的窗口,并显示在屏幕上。大小为200*120.窗口大小不可调整。

源程序:3-1.cpp

#include <qapplication.h>

#include <qwidget.h>

#include <qpushbutton.h>

#include <qlabel.h>

 

//在类的声明里,我们只

//需要包含新的成员。其它的

//方法都从QWidget类中继承来:

class MyMainWindow:public QWidget

{

    QPushButton *b;

    QLabel *l;

    public:

        MyMainWindow();

};

 

MyMainWindow::MyMainWindow()

{

    //设置窗口的最大、最小尺寸

   //我们不需要添加this指针,

   //因为C++默认是现在的类

    setMinimumSize(400,300);

    setMaximumSize(400,300);

    b=new QPushButton("hello world!",this);

    b->setGeometry(20,20,160,80);

    l=new QLabel("label",this);

    l->setGeometry(100,90,160,93);

}

 

int main(int argc,char **argv)

{

    //创建要求的应用类对象a

    QApplication a(argc,argv);

    //创建MyMainWindow类的对象,

    //并设置其为主视图

    MyMainWindow w;

    a.setMainWidget(&w);

    //显示主窗口对象,并且

    //它的子视图也会显示到屏幕

    w.show();

    //等待用户命令

    a.exec();

}

//**************************************************************

   QT库与用户的交互方式,例如按钮、滑块,是通过使用信号和槽。信号和槽是相互关联的函数

题目要求:添加退出按钮

3-5.cpp

#include <qapplication.h>

#include <qwidget.h>

#include <qpushbutton.h>

#include <qlabel.h>

 

//在类的声明里,我们只

//需要一个新的构造函数。

//其它的成员都是从类QWidget中继承来的:

class MyMainWindow:public QWidget

{

    QPushButton *b;

    QLabel *l;

    public:

        MyMainWindow();

};

 

MyMainWindow::MyMainWindow()

{

    setGeometry(100,100,200,170);

    //setMinimumSize(400,300);

    //setMaximumSize(400,300);

   

    b=new QPushButton("Quit!",this);

    b->setGeometry(20,20,160,80);

    b->setFont(QFont("Times",18,QFont::Bold));

       

    l=new QLabel(this);

    l->setGeometry(10,110,180,50);

    l->setText("If you click the button above,

                \nthe whole program will exit");

    l->setAlignment(AlignCenter);

    //这里按钮b的clicked()信号与qApp的槽quit()链接,当点击按钮时,将产生QPushButton::clicked()信号,导致qApp的quit()槽被执行,从而程序退出。

那么,什么是qApp呢?qApp是Qt的一个内置指针。它总是指向程序中的QApplication对象(这里指a)。//

    connect(b,SIGNAL(clicked()),qApp,SLOT(quit()));

}

 

int main(int argc,char **argv)

{

    QApplication a(argc,argv);

    MyMainWindow w;

    a.setMainWidget(&w);

    w.show();

    return a.exec();

}

//**************************************************************

信号和槽的使用

题目要求:利用滑块来改变LCD显示的值

4-1.cpp

#include <qapplication.h>

#include <qwidget.h>

#include <qpushbutton.h>

#include <qfont.h>

#include <qlcdnumber.h>

#include <qslider.h>

 

//在类的声明里,我们只

//需要一个新的构造函数。

//其它的成员都是从类QWidget中继承来的:

class MyMainWindow:public QWidget

{

    QPushButton *b;

    QLCDNumber *lcd;

    QSlider *slider;

    public:

        MyMainWindow();

};

 

MyMainWindow::MyMainWindow()

{

    setGeometry(100,100,300,200);

   

    //setMinimumSize(400,300);

    //setMaximumSize(400,300);

    b=new QPushButton("Quit!",this);

    b->setGeometry(10,20,80,40);

    b->setFont(QFont("Times",18,QFont::Bold));

       

    lcd=new QLCDNumber(2,this);

    lcd->setGeometry(100,10,190,180);

   

    slider=new QSlider(Vertical,this);

    slider->setGeometry(10,60,80,130);

    //下面一行代码,使点击按键1,程序退出

    connect(b,SIGNAL(clicked()),qApp,SLOT(quit()));

    //下面一行链接滑块和显示器,使数字随着滑块的移动而改变

    connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));

}

 

int main(int argc,char **argv)

{

    QApplication a(argc,argv);

    MyMainWindow w;

    a.setMainWidget(&w);

    w.show();

    return a.exec();

}

//**************************************************************

用户自定义槽,需另外把自定义类做成声明函数,类中成员函数的实现可放在源函数里。

4-3.h(类的声明)

#include <iostream.h>

#include <qapplication.h>

#include <qwidget.h>

#include <qpushbutton.h>

#include <qfont.h>

 

class MyMainWindow:public QWidget

{

    //这个宏定义是不可缺少的

    Q_OBJECT;

   

    //用户自定义槽

    public slots:

        void SetValue();

        void ChangeValue();

    //用户自定义信号

    signals:

        void ValueChanged();

  //定义两个数据成员

private:

        QPushButton *b1;

        QPushButton *b2;

    //构造函数

    public:

        MyMainWindow();

};

 

类的函数成员的实现在源程序中

4-3.cpp(源程序)

#include <4-3.h>

 

void MyMainWindow::SetValue()

{

    //向自定义信号发送信号

    emit ValueChanged();

}

 

void MyMainWindow::ChangeValue()

{

    cout<<"test!"<<endl;

}

 

MyMainWindow::MyMainWindow()

{

    //设置主窗口大小

    setGeometry(100,100,300,200);

    //按键1:设置其标识符Print,

    //和坐标位置、几何大小,

    //第三句设置字体:

    b1=new QPushButton("Print!",this);

    b1->setGeometry(10,20,80,40);

    b1->setFont(QFont("Times",18,QFont::Bold));

    //按键1:设置其标识符Quit,

    //和坐标位置、几何大小,

    //第三句设置字体:

    b2=new QPushButton("Quit!",this);

    b2->setGeometry(10,80,80,40);

    b2->setFont(QFont("Times",18,QFont::Bold));

    //ValueChanged收到信号,就给自定义槽发送信号,ChangeValue则打印字符串

    connect(this,SIGNAL(ValueChanged()),this,SLOT(ChangeValue()));

    //点击1按键,向自定义槽发送信号

    connect(b1,SIGNAL(clicked()),this,SLOT(SetValue()));

    //点击2按键,程序退出

    connect(b2,SIGNAL(clicked()),qApp,SLOT(quit()));

}

 

int main(int argc,char **argv)

{

    //定义一个应用类对象

    QApplication a(argc,argv);

  //定义一个应用类对象

    MyMainWindow w;

   //设置w为主窗口

    a.setMainWidget(&w);

    //显示w

w.show();

    return a.exec();

}

 

//**************************************************************

转自:http://blog.sina.com.cn/s/blog_5eedcb760100cdst.html

posted @ 2012-05-13 23:22 BIG森林 阅读(466) | 评论 (0)编辑 收藏

QTableWidget的使用和美工总结

FriendTable->setFrameShape(QFrame::NoFrame);  //设置边框

FriendTable->setHorizontalHeaderLabels(HeadList);  设置表头

FriendTable->setSelectionMode(QAbstractItemView::SingleSelection);   设置选择的模式为单选择

FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows);    设置选择行为时每次选择一行

FriendTable->setShowGrid(false);   设置不显示格子线

FriendTable->setFont(font);   设置字体

设置表单背景或透明

QPalette pal = musicTable->palette();
    pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/background.png")) );
    musicTable->setPalette( pal );

设置它的背景图片,也可以将QBrush初始化为QColor来设置背景颜色

QPalette pll = musicTable->palette();

pll.setBrush(QPalette::Base,QBrush(QColor(255,255,255,0)));

musicTable->setPalette(pll);  //和QTextEdit一样,都可以使用样式表QPalette来修改它的背景颜色和背景图片,这里我们把刷子设置为全透明的,就可以是透明的


在QTableWidget列表中添加图片的方法  
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap("1.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
 musicTable->setItem(1,1,cubesHeaderItem);   //在第一行第一列中显示图片

*******************表头的属性修改****************

musicTable->horizontalHeader()->resizeSection(0,150);  //修改表头第一列的宽度为150

 musicTable->horizontalHeader()->setFixedHeight(25);  //修改表头合适的高度

musicTable->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:lightblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c;}");    //设置表头字体,颜色,模式

 FriendTable->verticalHeader()->setStyleSheet("QHeaderView::section {  background-color:skyblue;color: black;padding-left: 4px;border: 1px solid #6c6c6c}");   //设置纵列的边框项的字体颜色模式等

本来想找找QT里有没有现成的API的,结果没有找到,只能自己写了。
实现也好实现,QTableWidgetItem里面有修改背景色的API,直接调用,然后用循环控制隔行换色即可。
实现代码:
void testtt::changeColor(QTableWidget *tablewidget){
for (int i = 0;i < tablewidget->rowCount();i++)
{
      if (i % 2 == 0)
      {
            for (int j = 0;j < tablewidget->columnCount();j++)
           {
                 QTableWidgetItem *item = tablewidget->item(i,j);
                 if (item)
                {
                     const QColor color = QColor(252,222,156);
                      item->setBackgroundColor(color);
                 }
           }
     }
}

使用

向表中插入一项

  QTableWidgetItem *num=new QTableWidgetItem(QTableWidgetItem::Type);
            num->setCheckState(Qt::Unchecked);   //加入复选框
            num->setIcon(QIcon("images/fetion.png"));  //加入ICon
            num->setText(InfoList.at(i).name);
            num->setFont(font);
            num->setTextColor(color);
            num->setFlags(num->flags() ^ Qt::ItemIsEditable);

            int currentRow=FriendTable->rowCount();  //插入到最后
            FriendTable->insertRow(currentRow);
            FriendTable->setItem(currentRow,0,num);  //插入该Item
            FriendTable->selectRow(0);   选择第一行

删除某一行 列

FriendTable->removeRow(row);

FriendTable->removeColumn (column );

信号

void cellActivated ( int row, int column )
void cellChanged ( int row, int column )
void cellClicked ( int row, int column )
void cellDoubleClicked ( int row, int column )
void cellEntered ( int row, int column )
void cellPressed ( int row, int column )
void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn )
void currentItemChanged ( QTableWidgetItem * current, QTableWidgetItem * previous )  改变Item了
void itemActivated ( QTableWidgetItem * item )
void itemChanged ( QTableWidgetItem * item )
void itemClicked ( QTableWidgetItem * item )
void itemDoubleClicked ( QTableWidgetItem * item )
void itemEntered ( QTableWidgetItem * item )
void itemPressed ( QTableWidgetItem * item )
void itemSelectionChanged ()


QT QTableWidget中去掉默认自带的行号

使用QToolBox自动拖出来的QTableWidget控件中是自带行号的,有时候需要去掉,去年在做到这个地方的时候没有找到,今天找到了相关的方法,特记录下来。

 


如上,刚开始的时候左边默认自带序列号。

 

QHeaderView* headerView = table的名字->verticalHeader();
headerView->setHidden(true);

加上上面的代码,就可以去掉左边的行号了。

http://hi.baidu.com/buptyoyo/blog/item/bb8cab3d93817ec97d1e7143.html

设置行的默认高度

tableWidget->verticalHeader()->setDefaultSectionSize(height)



转自:http://blog.chinaunix.net/uid-24515821-id-2129109.html

posted @ 2012-05-09 22:19 BIG森林 阅读(1173) | 评论 (0)编辑 收藏

让QTreeWidget中的项目有复选框(

  1. 1,调整列宽:  
  2.     header()->setResizeMode(QHeaderView::Interactive);  
  3.     setColumnWidth( 0 , 200 ); //第一列宽设为200   
  4.   
  5. 2,单击tree widget 的 header 自动重新排列各item,设置如下:  
  6.     setSortingEnabled(true);  
  7.   
  8. 3,拖曳:  
  9.     setDragEnabled(true);   //允许拖曳某item   
  10.     setAcceptDrops(true);   //允许item接受拖曳过来的item   
  11.     setDragDropMode(QAbstractItemView::InternalMove);   //移动模式,某item拖走后原来的位置不再保留该item   
  12.   
  13. 4,激活编辑状态的动作:  
  14.     setEditTriggers( QAbstractItemView::SelectedClicked ); // QAbstractItemView::SelectedClicked    
  15.      //表示当该item呈被选择状态时再被单击就可编辑该项,类似windows资源管理器中重命名文件   
  16.   
  17.   
  18.   
  19. 像上图这样的效果,其实现很简单,代码如下:  
  20.   
  21.     QTreeWidget *legendView = new QTreeWidget(legend); //创建一个QTreeWidget对象   
  22.     legend->setWidget(legendView); //将该对象设为以前创建的停靠窗口legend的部件   
  23.   
  24.     legendView->setSortingEnabled(false); //不自动排序   
  25.     legendView->setDragEnabled(false); //不可拖放   
  26.     legendView->setAutoScroll(true);   //可以卷动   
  27.     legendView->setColumnCount(1); //列数   
  28.     legendView->header()->setHidden(1); //隐藏最顶上的表头   
  29.     legendView->setRootIsDecorated(true); //让根项目前面也有树状虚线   
  30.   
  31.   
  32.     QTreeWidgetItem * item1 = new QTreeWidgetItem();  
  33.     item1->setText(0,"item1");  
  34.     item1->setFlags(Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);  
  35.     item1->setCheckState (0, Qt::Checked);  
  36.       QIcon myIcon(QgsApplication::themePath()+"/mActionFolder.png");  
  37.     item1->setIcon(0, myIcon); //还可以为item自定义图标   
  38.   
  39.     legendView->addTopLevelItem(item1); //把item添加到QTreeWidget中   
  40.   
  41.     QTreeWidgetItem * item2 = new QTreeWidgetItem(item1); //为item1添加子项目,这样item1前面会出现“+”,   
  42.     item2->setText(0,"item2");  

posted @ 2012-05-09 22:16 BIG森林 阅读(4239) | 评论 (0)编辑 收藏

QT QStringList 用法

QStringList类提供了一个字符串列表
从QList <QString>继承而来,它提供快速索引为基础的接入以及快速插入和清除
其成员函数用于操作这个字符串列表如
append(),insert(), replace(), removeAll(), removeAt(), removeFirst(), removeLast(), and removeOne()等
1. 增加字符串
   可以通过append(),或使用<<,如
   QStringList fonts;
   fonts << "Arial" << "Helvetica" << "Times" << "Courier";
   // fonts:[ "Arial" ,"Helvetica", "Times" , "Courier"]
2. 合并字符串使用join( )
   QString str = fonts.join(",");
   // str == "Arial,Helvetica,Times,Courier"
3. 拆分字符串
   QString str = " Arial,Helvetica, ,Times,Courier ";
   QStringList list1 = str.split(",");
   // list1: [ " Arial ", " Helvetica ",” “, " Times ", " Courier " ]
   QStringList list2 = str.split(",", QString::SkipEmptyParts);
   // list2: [ " Arial ", " Helvetica ", " Times ", " Courier " ]
   也就是说如果有QString::SkipEmptyParts,空项不会出现在结果。默认情况下,空项被保留
4. 索引
   IndexOf()函数返回给定字符串的第一个出现的索引。
   而lastIndexOf()函数,返回字符串的最后一次出现的索引。
5. 替换replaceInStrings()
   QStringList files;
   files << "$QTDIR/src/moc/moc.y"
   << "$QTDIR/src/moc/moc.l"
   << "$QTDIR/include/qconfig.h";
   files.replaceInStrings("$QTDIR", "/usr/lib/qt");
   // files: [ "/usr/lib/qt/src/moc/moc.y", ...]
6. 过滤filter()
   可以让你提取一个新的列表只包含这些字符串包含一个特定的字符串(或匹配特定正则表达式):
   QStringList list;
   list << "Bill Murray" << "John Doe" << "Bill Clinton";
   QStringList result;
   result = list.filter("Bill");
   // result: ["Bill Murray", "Bill Clinton"]

7.遍历

  QList<QString>::Iterator it = user.begin(),itend = user.end();
  int i = 0;
  for (;it != itend; it++,i++){
   if (*it == pFindLine->text()){//找到,高亮显示
    QModelIndex index = model->index(i);
    m_pTabList->setCurrentIndex(index);
    break;
   }
  }



转载:http://blog.csdn.net/zhangxiaonanwin/article/details/6088681

posted @ 2012-05-09 22:16 BIG森林 阅读(812) | 评论 (0)编辑 收藏

QT arcTo函数简析

QT arcTo函数简析

void QPainterPath::arcTo ( const QRectF & rectangleqreal startAngleqreal sweepLength )

void QPainterPath::arcTo ( qreal xqreal yqreal widthqreal heightqreal startAngleqreal sweepLength )

 

根据给定的参数(一个矩形)画弧度,或者说画圆形。

下面给一副图就可以很容易的理解这个函数了。

rectangle 就是x,y,width,height组成的一个矩形,如图。

startAngle就是开始的角度,角度如图所示,你也可以是自己设定的角度,如20/30什么的。

sweepAngle顾名思义就是扫取的角度,按图中所示,它是顺时针的哦。

 

也就是说如果你要画一个右半圆就可以这样:

path.arcTo(0, 0, R*2, R*2, 0, 180);  //其中R是半径




posted @ 2012-05-07 14:59 BIG森林 阅读(793) | 评论 (0)编辑 收藏

QT类型转换

     摘要: Qt数据类型与强制转换(整理) 变量(Variable)和对象(Object) 在python中的变量不需要声明,因为python是动态语言。python中所有的东西都是对象。   数字(Number)和字符(String) 在python中包括几种(整数、浮点数、长整数)数字类型和两种字符类型。   整数(Integer)和长整数(Long Integer) ...  阅读全文

posted @ 2012-05-07 14:58 BIG森林 阅读(5205) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9 
<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜