Qt ListWidget内容上下移动(简单实现)
- 上移操作
实现思路:获取当前选中行信息(内容QString、行号currentRow()),删除当前行,并将获取到的信息在上一行进行添加。
widget.h文件
private:
Ui::Widget *ui;
QListWidgetItem * selitem; //新建ListWidgetItem指针
widget.cpp文件
void Widget::on_btn_up_clicked() //单步操作上移
{
selitem = ui->listWidget->currentItem(); //获取用户当前选中项
if(selitem!=NULL) //判断非空,否则点击会出错
{
int currRow = ui->listWidget->currentRow();//获取当前行号
QString selstr = selitem->text(); //获取当前行内容
if(currRow>0) //限制(上移至第0行终止)
{
delete ui->listWidget->takeItem(currRow);//删除当前行
ui->listWidget->insertItem(currRow-1,selstr);//在上一行插入新行,内容为之前选中内容
}
ui->listWidget->setCurrentRow(currRow-1);//将上移后的新行选中,实现连续上移
}
}
- 下移操作
实现思路与上移大致相同,只不过通过总行数与选中行行数之差判断是否还有下移空间
void Widget::on_btn_down_clicked() //单步操作下移
{
selitem = ui->listWidget->currentItem();
if(selitem!=NULL)
{
int currRow = ui->listWidget->currentRow();
QString selstr = selitem->text();
int rowAll = ui->listWidget->count();//获取当前list总行数
if((rowAll-currRow)>0)//限制(下移至最后一行终止)
{
delete ui->listWidget->takeItem(currRow);
ui->listWidget->insertItem(currRow+1,selstr);
}
ui->listWidget->setCurrentRow(currRow+1);
}
}
新人第一次发文,希望能帮到有需要朋友,当然欢迎大家在评论区交流分享更简单高效的代码!