900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > qt的qlistview

qt的qlistview

时间:2020-07-08 21:51:04

相关推荐

qt的qlistview

-07-13添加留言

我要用的qlistview建立一棵树,这棵树满足一下特点:

1,qlistview中随意添加节点

2,qlistview中奇偶数的节点背景色不同,这样好区分东西.

3,qlistview中单击该节点的时候该节点变为一种新的背景色.

4,qlistview中单击其他节点时,原来单击的节点回复原来的背景色,注意是原来的.

5,qlistview中单击节点时获得该节点的数据.

下面给出代码:

#include

这是必须引入的类之一

另外我在ui里边随意创建了一个listview

QStandardItemModel * mulu1Model ;

这是必须在工程中的h文件必须声明的QStandardItemModel 对象.这样方便下面调用.

void MainWindow::listviewItemClicked(QModelIndex index)

{

qDebug() << index.data().toString();

for(int i=0;imulu1Model->rowCount(index.parent());i++)

{

QStandardItem *item = this->mulu1Model->item(i);

if(item->index() == index)

{

{

QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));

linearGrad.setColorAt(0, Qt::red);

QBrush brush(linearGrad);

item->setBackground(brush);

}

}

else

{

if(i % 2 == 1)

{

QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));

linearGrad.setColorAt(0, Qt::darkGreen);

linearGrad.setColorAt(1, Qt::yellow);

QBrush brush(linearGrad);

item->setBackground(brush);

}

else

{

QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));

linearGrad.setColorAt(0, Qt::white);

linearGrad.setColorAt(1, Qt::white);

QBrush brush(linearGrad);

item->setBackground(brush);

}

}

}

// this->ui->listView->update(index);

qDebug() << index.data().toString();

}

以上函数是单击qlistview节点时触发的.

void MainWindow::initListview(QStringList *list)

{

mulu1Model= new QStandardItemModel(this);

QStringList strList;

strList.append("string1");

strList.append("string2");

strList.append("string3");

strList.append("string4");

strList.append("string5");

strList.append("string6");

strList.append("string7");

strList << "string8";

strList += "string9";

int nCount = strList.size();

for(int i = 0; i < nCount; i++)

{

QString string = static_cast(strList.at(i));

QStandardItem *item = new QStandardItem(string);

if(i % 2 == 1)

{

QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));

linearGrad.setColorAt(0, Qt::darkGreen);

linearGrad.setColorAt(1, Qt::yellow);

QBrush brush(linearGrad);

item->setBackground(brush);

}

mulu1Model->appendRow(item);

}

for(int i = 0; i < nCount; i++)

{

QString string = static_cast(strList.at(i));

QStandardItem *item = new QStandardItem(string);

if(i % 2 == 1)

{

QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));

linearGrad.setColorAt(0, Qt::darkGreen);

linearGrad.setColorAt(1, Qt::yellow);

QBrush brush(linearGrad);

item->setBackground(brush);

}

mulu1Model->appendRow(item);

}

for(int i = 0; i < nCount; i++)

{

QString string = static_cast(strList.at(i));

QStandardItem *item = new QStandardItem(string);

if(i % 2 == 1)

{

QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));

linearGrad.setColorAt(0, Qt::darkGreen);

linearGrad.setColorAt(1, Qt::yellow);

QBrush brush(linearGrad);

item->setBackground(brush);

}

mulu1Model->appendRow(item);

}

this->ui->listView->setModel(mulu1Model);

connect(this->ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(listviewItemClicked(QModelIndex)));

}

以上函数是初始化qlistview.

构造函数里必须调用这个初始化函数.

初始化qlistview里边有几行重复的,是为了测试行数过多是否会导致操作变缓慢,测试结果说明这个数量下没问题.

暂时没有相关的文章.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。