Qt5.9的QListWidget控件用法(设计者模式)

本文章主要总结Qt5.9中的listWidget控件的用法。该用法包括在ui界面上添加列表内容和用代码添加列表内容,然后单击第一行内容后,触发单击列表事件,在lineText编辑框中显示单击列表的行号(比如单击列表的第0行,则显示行号为0)。具体编写步骤如下所述。

 

1.1新建一个Widget工程,基类选择QWidget。在ui界面上拖入一个ListWidget控件和一个lineText控件,如下图所示:

 

1.2在ListWidget控件上双击,弹出如下图所示列表编辑框。点击左下角的"+"按钮,再点击右边的"属性"按钮,弹出属性设置框,在属性设置框的text项输入"设备1",下面还可以设置icon图标,font字体等内容。

 

 

1.3在listWidget控件鼠标右键,转到槽,选择clicked(QModeIndex)槽函数,如下图所示:

 

1.4在槽函数中添加如下代码:

 

void Widget::on_listWidget_clicked(const QModelIndex &index)//单击ListWidget的某一行事件触发信号函数
{
    int currenRow = ui->listWidget->currentRow();//当前单击选中ListWidget控件的行号(第几行)
    ui->lineEdit->setText(tr("%1").arg(currenRow));//将这个行号显示在lineText编辑框中
}

 

 

 

1.5在Widget构造函数最下面,添加如下代码:

 

    QStringList list;
    list<<tr("设备2");//将内容"设备2"赋值给列表第一行。后面还可以赋值给列表的第二行,例如:list<<tr("设备2")<<tr("设备3")
    ui->listWidget->insertItems(1,list);//在ListWidget控件的第1行插入一个列表list内容

 

 

1.6重新构建和运行后,结果如下图所示:

 

 

 

由以上结果可知,单击listWidget列表的设备1,触发单击列表事件信号函数,该函数获取当前选中listWidget的行号,并且在lineText编辑框中显示该行号0。单击设备2,同样在lineText编辑框中心显示行号1。

 

 

参考内容:

http://blog.csdn.net/fjb2080/article/details/4922490(重点参考)

http://www.cnblogs.com/venow/archive/2012/10/16/2726576.html

我做的是一个公交车报站系统,在点击完模拟按钮后,会模拟走完整条路线,但是QListWidget不会动态更新,其中的数据处理部分还是会进行![图片说明](https://img-ask.csdn.net/upload/201505/05/1430791339_595325.png) 附上模拟按钮的代码 /* simulate */ void MyDialog::on_pushButton_3_clicked() { while (1) { // 先清空显示 ui->listWidget->clear(); QFile file("bus_.xml"); if (!file.open(QIODevice::ReadOnly)) return ; QDomDocument doc; if (!doc.setContent(&file)) { file.close(); return ; } file.close(); QDomElement docElem = doc.documentElement(); QDomElement c; QString curstation; int flag=0, count=0; QDomNode n = docElem.firstChild(); while(!n.isNull()) { if (n.isElement()) { QDomElement e = n.toElement(); QDomNodeList list = e.childNodes(); if (flag == 1) { for(int i=0; i<list.count(); i++) { QDomNode node = list.at(i); if(node.isElement()) { if (i == number) { qDebug()<<number; //ui->listWidget->addItem(new QListWidgetItem(QIcon("yuan.jpg"), node.toElement().text())); ui->listWidget->setCurrentItem(new QListWidgetItem(QIcon("yuan.jpg"), node.toElement().text())); curstation = node.toElement().text(); qDebug()<<"next station"<<curstation; } else{ //ui->listWidget->addItem(" " + node.toElement().text()); ui->listWidget->setCurrentItem (new QListWidgetItem(QIcon("yuan.jpg"), node.toElement().text())); } } } } else { QDomNode node_count = list.at(0); count = node_count.toElement().text().toInt(); //qDebug()<<count; } flag++; } n = n.nextSibling(); } //char command[256] = {0}; QString command; command = _config_2() + curstation ; qDebug()<<command; /* yuying */ tts_open_test("/dev/ttyUSB0", (char *)command.toStdString().c_str()); /* net_demo_string */ /* string shuld be utf-8 */ net_demo_string((char *)command.toStdString().c_str()); qDebug()<<"net_demo_string"; /* maybe change */ QByteArray datagram = curstation.toStdString().c_str(); sender->writeDatagram (datagram.data(), datagram.size(), QHostAddress::Broadcast, 45454); if (count == number) { return ; } ui->listWidget->update (); number++; sleep(1); } }
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页