首页 > 编程知识 正文

不同音乐软件如何统一歌单,qlistwidget样式表

时间:2023-05-04 05:44:31 阅读:173217 作者:4713

1、QListWidget简介

Qt助手介绍: theqlistwidgetclassprovidesanitem-basedlistwidgetisaconvenienceclassthatprovidesalistviewsimilararion butwithaclassicitem-basedinterfaceforaddingandremovingitems.qlistwidgetusesaninternalmodeltomanageeeeachqlistems英语很简单,所以翻译使用很多Qt助手。 越用越酸。 变酸是咬英语,变爽是学到更多。 QListWidget的好处是简单易用,是列表和入门学习的好选择。 这次使用QListWidget制作模仿音乐的歌曲列表,和大家一起学习,效果如图1所示。

图1

2、建立Qt Gui项目和布局

在其中选择q小部件作为基类,工程完成后进入界面设计器,并将列表小部件控件拖到界面中。 为了展示其效果,添加了输入框作为输入歌曲信息,并添加到列表中。 界面的布局如图2所示。

图2

3、主要代码

首先介绍主要的想法。 每首歌曲都代表一行,但歌曲具有下载、试听和选择收藏等操作选项,不能单纯地显示。 使用红色的QToolButton按钮,蓝色的QLabel,如图3.1所示。

图3.1

将这些QToolButton和QLabel组合到小部件中,并放在QListWidget (即一行)中。 这将使用最重要的函数。

voidqlistwidgetitem * item,q构件* :3360设置构件;

一个术语是外观布局使用QListWidgetItem构件,它将QToolButton、QLabel和QLayout写入自己定义的QListWidgetItem控件的集合中,并在setitem构件函数中使用QListWidget

主要代码如下。

# include ' music _ list.h ' # include ' ui _ music _ list.h ' # includeqgridlayout # includeqlistwidget # includeqpixmmmmet 用户界面构件设置模式(qlistview 3360: adjust ); ui-list构件设置自动滚动(true; 连接(ui-push button,signal(clicked ) bool ),this,slot (addsing () )连接(ui-list构件,signal ) itetite 将//点中的那一行放大一点(//创建新的ListWidgetItem并向列表添加歌曲信息) void music _ list 3360: add _ listwidgetitem (sing _ messatem ) //新q小部件的窗口chooseBtn=newQToolButton; //检查歌曲按钮choose BTN-settoolbuttonstyle (Qt : toolbuttonicononly ); //仅显示图像选择大小(q大小(20,20 ) ); //按钮大小chooseBTN-seticon(qicon ) ) :/images/choose.png ); //添加图片choose BTN-set style sheet (' qtoolbutt )

on{background-color:transparent}");//背景透明 connect(chooseBtn,SIGNAL(clicked(bool)),this,SLOT(change_chooseBtn())); name=newQLabel; //歌曲名称 name->setText(message.name); MVBtn=newQToolButton; //MV按钮 MVBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); //只显示图片 MVBtn->setIconSize(QSize(20,20)); //按钮大小 MVBtn->setStyleSheet("QToolButton{background-color:transparent}");//背景透明 if(!(message.mv_empty.isEmpty())) { MVBtn->setIcon(QIcon(":/images/mv.png")); //添加图片 } else { //不显示按钮或者不添加进去 } time=newQLabel(message.time); size=newQLabel(message.size); heat=newQLabel; if(message.heat==2) { QPixmapicon(":/images/2st.png"); heat->setPixmap(icon); heat->resize(icon.width(),icon.height());//图片填充满Label } elseif(message.heat==3) { QPixmapicon(":/images/3st.png"); heat->setPixmap(icon); heat->resize(icon.width(),icon.height());//图片填充满Label } elseif(message.heat==4) { QPixmapicon(":/images/4st.png"); heat->setPixmap(icon); heat->resize(icon.width(),icon.height());//图片填充满Label } listenBtn=newQToolButton; listenBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); //只显示图片 listenBtn->setIconSize(QSize(20,20)); //按钮大小 listenBtn->setIcon(QIcon(":/images/play.png")); //添加图片 listenBtn->setStyleSheet("QToolButton{background-color:transparent}");//背景透明 addBtn=newQToolButton; addBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); //只显示图片 addBtn->setIconSize(QSize(20,20)); //按钮大小 addBtn->setIcon(QIcon(":/images/add.png")); //添加图片 addBtn->setStyleSheet("QToolButton{background-color:transparent}");//背景透明 downloadBtn=newQToolButton; downloadBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); //只显示图片 downloadBtn->setIconSize(QSize(20,20)); //按钮大小 downloadBtn->setIcon(QIcon(":/images/down.png")); //添加图片 downloadBtn->setStyleSheet("QToolButton{background-color:transparent}");//背景透明 connect(downloadBtn,SIGNAL(clicked(bool)),this,SLOT(dowmloadBtn_Change())); lingBtn=newQToolButton; lingBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); //只显示图片 lingBtn->setIconSize(QSize(20,20)); //按钮大小 lingBtn->setIcon(QIcon(":/images/ling.png")); //添加图片 lingBtn->setStyleSheet("QToolButton{background-color:transparent}");//背景透明 musicBtn=newQToolButton; musicBtn->setToolButtonStyle(Qt::ToolButtonIconOnly); //只显示图片 musicBtn->setIconSize(QSize(20,20)); //按钮大小 musicBtn->setIcon(QIcon(":/images/unkown.png")); //添加图片 musicBtn->setStyleSheet("QToolButton{background-color:transparent}");//背景透明 QGridLayout*Glayout=newQGridLayout; Glayout->addWidget(chooseBtn,0,0); Glayout->addWidget(name,0,1); Glayout->addWidget(MVBtn,0,2); Glayout->addWidget(time,0,3); Glayout->addWidget(size,0,4); Glayout->addWidget(heat,0,5); Glayout->addWidget(listenBtn,0,6); Glayout->addWidget(addBtn,0,7); Glayout->addWidget(downloadBtn,0,8); Glayout->addWidget(lingBtn,0,9); Glayout->addWidget(musicBtn,0,10); //QBoxLayout::setContentsMargins(11,0,0,11); WContainer->setLayout(Glayout); QListWidgetItem*WContainerItem=newQListWidgetItem(ui->listWidget); WContainerItem->setSizeHint(QSize(40,40)); WContainerItem->setToolTip(name->text()+size->text()+message.formats+message.timbre); ui->listWidget->setItemWidget(WContainerItem,WContainer);//将WContainer赋予WContainerItem} //获取歌曲信息voidMusic_List::addSing(){ sing_messagemessage; message.name=ui->namelineEdit->text(); message.mv_empty=ui->mvlineEdit->text(); message.time=ui->timelineEdit->text(); message.size=ui->biglineEdit->text(); message.heat=ui->holdlineEdit->text().toInt(); message.timbre=tr("优质"); message.formats=tr("文件格式:MP3"); message.rate=tr("码率:128kbps"); Add_ListWidgetItem(message);} //点中选中歌曲的按钮voidMusic_List::change_chooseBtn(){ QToolButton*Btn=qobject_cast<QToolButton*>(sender());//新建一个object关于QToolButton的对象 if(!Btn) { return; } for(inti=0;i<ui->listWidget->count();i++) { if(Btn->parentWidget()==ui->listWidget->itemWidget(ui->listWidget->item(i)))//获得指向当前选中的item { Btn->setIcon(QIcon(":/images/haschoose.png")); ui->listWidget->item(i)->setBackgroundColor(QColor(0,200,200,255));//更换item的背景颜色 } }} //点中选择下载按钮voidMusic_List::dowmloadBtn_Change(){ QToolButton*DBtn=qobject_cast<QToolButton*>(sender());//新建一个object关于QToolButton的对象 if(!DBtn) { return; } for(inti=0;i<ui->listWidget->count();i++) { if(DBtn->parentWidget()==ui->listWidget->itemWidget(ui->listWidget->item(i)))//获得指向当前选中的item { DBtn->setIcon(QIcon(":/images/ok.png")); } }}
需要源码可以去下载:点击打开链接




版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。