赞
踩
在linux环境下安装mplayer后,打开ubuntu里的QT,QT安装的版本5.12.9,QT界面的图标基本都是正点原子收集的图片,实现方式参考B站里的教学
简单介绍mplayer命令:
按键操作:
音量减小:/、9
音量增大:*、0
上、下键: 前进、后退1分钟,
左键、右键:前进、后退10秒
mplayer Music/*
这个就是播放Music目录下的所有音乐,是按顺序播放的命令:
-shuffle
随机播放
-playlist list.txt
列表顺序播放
-slave
开启从模式后台播放
-loop N
重复播放N次,N=0则永远重复播放
-quiet
指定mplayer不向屏幕上,打印乱码信息
-slave
可以敲入指定命令后回车控制
-idle
播放文件至文件末尾后mplayer不退出
-softvol
不加这个参数可能无法设置静音
mplayer * < /dev/null &
后台播放,可以加参数
mplayer * < /dev/null > /dev/null 2>1&
后台播放,不可以加参数,把 mplayer *产生的所有的标准输出/输入都丢掉,
包括标准错误输出(2>1&),这样即使出错也不会跳出任何提示,完全安静的后台运行-input命令行模式下的://注意很重要,发送的指令结尾一定要\n结尾,不然无效
loadfile string //播放string指定的歌曲,string为歌曲路径+文件名(例:“loadfile ../easylove.mp3”)。
volume x 1 //设置音量,x为音量的大小。1-100
mute 1/0 //静音开关。1:静音;0:取消静音。
pause //暂停/取消暂停。
seek value //快进或快至参数value指定的秒数
当value为正时,快进;当value为负时,快退。
get_percent_pos //获得文件的播放进度(百分比:0--100)。
get_time_pos //获得文件的当前位置,以秒为单位,精确到小数位1位。
get_file_name //获得文件的文件名。
get_time_length //获得文件的长度,以秒为单位。
get_meta_album //获得文件的 '专辑' 的元数据。
get_meta_artist //获得文件的 '艺术家' 的元数据。
get_meta_comment //获得文件的 '评论' 的元数据。
get_meta_genre //获得文件的 '流派' 的元数据。
get_meta_title //获得文件的 '标题' 的元数据。
get_meta_year //获得文件的 '年份' 的元数据。get_percent_pos ----->回应格式:ANS_PERCENT_POSITION=52
get_time_pos---->回应格式:ANS_TIME_POSITION=124.2
get_file_name --->回应格式:ANS_FILENAME='da.mp3'
get_time_length ---->回应格式:ANS_LENGTH=221.00
get_meta_album--->回应格式:ANS_META_ALBUM=''
get_meta_artist--->回应格式:ANS_META_ARTIST=''
get_meta_comment--->回应格式:ANS_META_COMMENT=''
get_meta_genre--->回应格式:ANS_META_GENRE=''
get_meta_title--->回应格式:ANS_META_TITLE=''
get_meta_year--->回应格式:ANS_META_YEAR=''
上节已经交叉编译mplayer过了并且已经拷贝至开发板了,这里略过
mainwindow.h
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include <QMainWindow>
- #include <QPushButton>
- #include <QPalette>
- #include <QSlider>
- #include <QTime>
- #include <QTimer>
- #include <QListWidget>
- #include <QProcess>
- #include <QFileDialog>
- #include <QDebug>
- #include <QLabel>
- #include <QTextCodec>
- #include <QString>
-
- #include <ctime>
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class MainWindow; }
- QT_END_NAMESPACE
-
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- MainWindow(QWidget *parent = nullptr);
- ~MainWindow();
-
- void parts_init();
- void QSlider_init();
- void QListWidget_init();
- void scanSong();
- private slots:
- void pause_clicked();
- //void exit_clicked();
- void prev_clicked();
- void next_clicked();
- void favorite_clicked();
- void listcircle_clicked();
- void menu_clicked();
- void back_message_slot();
- void getPosTime_timeout();
- void musicSlide_slot(int value);
- void volumeSlide_slot(int value);
- void volume_clicked();
- void volume_timeout();
- void addfile_clicked();
- void cd_timeout();
- void songList_itemClicked();
-
- private:
- Ui::MainWindow *ui;
- QProcess *process;
- QPalette Pic;
-
- QFileInfoList songFilelist;
-
- QTimer *timer_cd;
- QTimer *timer_getPosTime;
- QTimer *timer_vol;
-
- int cur_time,length_time,value;
- QSlider *music_Slider,*volume_Slider;//进度条
-
- QPushButton *prev_button, *pause_button, *next_button, *exit_button, *volume_button, *addfile_button,
- *favorite_button, *listcircle_button, *menu_button;
-
- QListWidget *songList;//播放列表
-
- QLabel *label_cd;
- QLabel *lable_SongTitle; //歌曲名称
-
- QLabel *lable_Songcurrent_time;//显示 当前时间
- QLabel *lable_SongTotal_time;//显示 总时间
- };
- #endif // MAINWINDOW_H
mainwindow.cpp
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
-
- int play_flag = false;
- int favorite_flag = false;
- int menu_flag = false;
- int circle_play = true;//false=随机播放,true=循环列表
- static int i =1;
-
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- this->setWindowTitle("音乐播放器");
- this->setFixedSize(800,500);
- //Pic.setBrush(QPalette::Background,QBrush(QPixmap(":/pic/musicback0.jpeg").scaled(this->size())));
- //this->setPalette(Pic);
-
- process = new QProcess;
-
- timer_cd = new QTimer;
- connect(timer_cd,&QTimer::timeout,this,&MainWindow::cd_timeout);
-
- timer_getPosTime = new QTimer;
- connect(timer_getPosTime,&QTimer::timeout,this,&MainWindow::getPosTime_timeout);
- timer_getPosTime->start(900);
-
-
- parts_init();
- QSlider_init();
- QListWidget_init();
-
- connect(pause_button,&QPushButton::clicked,this,&MainWindow::pause_clicked);
- connect(prev_button,&QPushButton::clicked,this,&MainWindow::prev_clicked);
- connect(next_button,&QPushButton::clicked,this,&MainWindow::next_clicked);
- //connect(exit_button,&QPushButton::clicked,this,&MainWindow::exit_clicked);
- connect(favorite_button,&QPushButton::clicked,this,&MainWindow::favorite_clicked);
- connect(listcircle_button,&QPushButton::clicked,this,&MainWindow::listcircle_clicked);
- connect(menu_button,&QPushButton::clicked,this,&MainWindow::menu_clicked);
-
- connect(songList,&QListWidget::doubleClicked,this,&MainWindow::songList_itemClicked);
- connect(process,&QProcess::readyReadStandardOutput,this,&MainWindow::back_message_slot);
-
- //connect(music_Slider,&QSlider::sliderMoved,this,&MainWindow::musicSlide_slot);
- connect(volume_Slider,&QSlider::valueChanged,this,&MainWindow::volumeSlide_slot);
- connect(volume_button,&QPushButton::clicked,this,&MainWindow::volume_clicked);
- connect(timer_vol,&QTimer::timeout,this,&MainWindow::volume_timeout);
-
- connect(addfile_button,&QPushButton::clicked,this,&MainWindow::addfile_clicked);
-
- }
-
- MainWindow::~MainWindow()
- {
- delete process;
- delete ui;
- }
-
- void MainWindow::parts_init()
- {
- QFont font;
-
- label_cd = new QLabel(this);
- label_cd->setGeometry(390,30,300,300);
- label_cd->setStyleSheet("border-image: url(:/images/cd.png);");
-
- lable_SongTitle = new QLabel(this);
- lable_SongTitle->setGeometry(310,360,350,25);
- font.setPointSize(12);
- lable_SongTitle->setFont(font);
- lable_SongTitle->setStyleSheet("QLabel{color:white;}QLabel{background:transparent}");
- lable_SongTitle->setText("音乐PLAY");
- lable_SongTitle->setAlignment(Qt::AlignVCenter|Qt::AlignLeft);
-
- lable_Songcurrent_time = new QLabel(this);;
- lable_Songcurrent_time->setGeometry(650,365,60,20);
- font.setPointSize(10);
- lable_Songcurrent_time->setFont(font);
- lable_Songcurrent_time->setStyleSheet("QLabel{color:white;}QLabel{background:transparent}");
- lable_Songcurrent_time->setText("00:00 / ");
- lable_Songcurrent_time->setAlignment(Qt::AlignVCenter|Qt::AlignLeft);
-
- lable_SongTotal_time = new QLabel(this);
- lable_SongTotal_time->setGeometry(700,365,60,20);
- font.setPointSize(10);
- lable_SongTotal_time->setFont(font);
- lable_SongTotal_time->setStyleSheet("QLabel{color:white;}QLabel{background:transparent}");
- lable_SongTotal_time->setText("00:00");
- lable_SongTotal_time->setAlignment(Qt::AlignVCenter|Qt::AlignLeft);
-
- prev_button = new QPushButton;
- prev_button->setFixedSize(75,75);//防止它变大或者变小
- prev_button->setStyleSheet("border-image: url(:/images/btn_previous.png);");
- prev_button->setIconSize(QSize(75,75));//设置图标大小
- prev_button->setFlat(true);
- prev_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- prev_button->setParent(this);//按钮一定要设置父窗口,不然显示不出
- prev_button->move(20,400);
-
- pause_button = new QPushButton;
- pause_button->setFixedSize(75,75);//防止它变大或者变小
- //pause_button->setIcon(QIcon(":/images/btn_play.png"));//这种点击效果不好看
- pause_button->setStyleSheet("border-image: url(:/images/btn_play.png);");
- pause_button->setIconSize(QSize(75,75));//设置图标大小
- pause_button->setFlat(true);
- pause_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- pause_button->setParent(this);
- pause_button->move(100,400);
-
-
- next_button = new QPushButton;
- next_button->setFixedSize(75,75);//防止它变大或者变小
- next_button->setStyleSheet("border-image: url(:/images/btn_next.png);");
- next_button->setIconSize(QSize(75,75));//设置图标大小
- next_button->setFlat(true);
- next_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- next_button->setParent(this);
- next_button->move(180,400);
-
- /*
- exit_button = new QPushButton;
- exit_button->setFixedSize(75,75);//防止它变大或者变小
- exit_button->setIcon(QIcon(":/images/btn_exit.png"));
- exit_button->setIconSize(QSize(75,75));//设置图标大小
- exit_button->setFlat(true);
- exit_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- exit_button->setParent(this);
- exit_button->move(760,450);
- */
- addfile_button = new QPushButton;
- addfile_button->setFixedSize(43,43);//防止它变大或者变小
- addfile_button->setStyleSheet("border-image: url(:/images/openfile.png);");
- addfile_button->setIconSize(QSize(43,43));//设置图标大小
- addfile_button->setFlat(true);
- addfile_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- addfile_button->setParent(this);
- addfile_button->move(200,0);
- addfile_button->setVisible(false);
-
- favorite_button = new QPushButton;
- favorite_button->setFixedSize(25,25);//防止它变大或者变小
- favorite_button->setIcon(QIcon(":/images/btn_favorite_no.png"));
- favorite_button->setIconSize(QSize(25,25));//设置图标大小
- favorite_button->setFlat(true);
- favorite_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- favorite_button->setParent(this);
- favorite_button->move(310,430);
-
- listcircle_button = new QPushButton;
- listcircle_button->setFixedSize(25,25);//防止它变大或者变小
- listcircle_button->setIcon(QIcon(":/images/btn_listcircle.png"));
- listcircle_button->setIconSize(QSize(25,25));//设置图标大小
- listcircle_button->setFlat(true);
- listcircle_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- listcircle_button->setParent(this);
- listcircle_button->move(388,430);
-
- menu_button = new QPushButton;
- menu_button->setFixedSize(25,25);//防止它变大或者变小
- menu_button->setIcon(QIcon(":/images/btn_menu1.png"));
- menu_button->setIconSize(QSize(25,25));//设置图标大小
- menu_button->setFlat(true);
- menu_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- menu_button->setParent(this);
- menu_button->move(466,430);
-
- timer_vol = new QTimer(this);//音量显示定时器
- volume_button = new QPushButton;
- volume_button->setFixedSize(25,25);//防止它变大或者变小
- volume_button->setIcon(QIcon(":/images/btn_volume.png"));
- volume_button->setIconSize(QSize(25,25));//设置图标大小
- volume_button->setFlat(true);
- volume_button->setFocusPolicy(Qt::NoFocus);//去除虚线边框
- volume_button->setParent(this);
- volume_button->move(544,430);
-
-
- songList = new QListWidget(this);
- songList->clear(); //清空列表
- songList->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //关闭水平滚动条
- songList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //关闭垂直滚动条
- songList->setFrameShape(QFrame::NoFrame); //去除边框
- songList->setGeometry(0,35,230,370);//设置歌曲列表位置与大小
- songList->setVisible(false);
-
- }
-
- void MainWindow::QSlider_init()
- {
- //播放进度滑块
- music_Slider = new QSlider(Qt::Horizontal, this); //设置为水平滑动条
- music_Slider->setGeometry(310,385,450,40); //设置位置和大小
- music_Slider->setRange(0,100);
- music_Slider->setValue(0);
- music_Slider->setTracking(false); 禁用追踪
- music_Slider->setStyleSheet( //设置滑块样式,如果写到qss样式文件里是不可以注释的
- //滑条
- "QSlider::groove:horizontal{"
- " border: 1px solid #999999;"
- " height: 5px; "
-
- "position: absolute;"
- "border-radius :3px;"
- " background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);"
- " margin: 1px 0;"
- " left: 3px; right: 3px;"
- "}"
- //小滑块
- "QSlider::handle:horizontal {"
- " background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4, stop:1 #8f8f8f);"
- "border: 1px solid #5c5c5c;"
- "width: 12px;"
- " height: 12px; "
- "margin: -2px -1; "
- " border-radius: 4px;"
- "}"
- //滑块滑过改变样式
- " QSlider::add-page:horizontal {"
- "border-radius :2px;"
- " margin: 1px 1;"
- "background: white;"
- "}"
-
- "QSlider::sub-page:horizontal {"
- "border-radius :2px;"
- " margin: 1px 1;"
- " background-color:#86dfc6;"
- "}"
- );
-
- connect(music_Slider,&QSlider::sliderMoved,[=](int value){
- //pause_button->setIcon(QIcon(":/images/btn_pause.png"));//不知道为啥,这里如果设置的话界面会卡住,暂且先留不设置
- QString msg = "seek "+QString::number(value)+" 1\n";
- QByteArray ba = msg.toLatin1();
- process->write(ba.data());
-
- });
-
-
- //音量滑块设置
- volume_Slider = new QSlider(Qt::Horizontal, this); //设置为水平滑动条
- volume_Slider->setGeometry(575,433,180,20); //设置位置和大小
- volume_Slider->setRange(0,100);
- volume_Slider->setValue(70);//没找到可以返回实时音量的指令,默认先设置为70
- volume_Slider->setTracking(true);
- volume_Slider->setVisible(false);//禁用追踪
-
- }
-
- void MainWindow::back_message_slot()
- {
- while (process->canReadLine()) {
- QString message(process->readLine());//也可以用readAll()函数,有点区别,但在这里没区别
- //qDebug()<<message;
- QStringList message_list = message.split("=");
- //QString remessage_cmd = message_list[0];//这样定义下面程序会出错,留下证据,一开始不知道
- //QString remessage_value = message_list[1];
- if(message_list[0] == "ANS_TIME_POSITION"){
- music_Slider->setValue(100*cur_time/length_time);
- cur_time = message_list[1].toDouble();
- QString textl = QString("%1%2:%3%4 /")
- .arg(cur_time/60/10).arg(cur_time/60%10)
- .arg(cur_time%60/10).arg(cur_time%60%10);
- lable_Songcurrent_time->setText(textl);
- QString textr = QString("%1%2:%3%4")
- .arg(length_time/60/10).arg(length_time/60%10)
- .arg(length_time%60/10).arg(length_time%60%10);
- lable_SongTotal_time->setText(textr);
- }
- else if (message_list[0] == "ANS_LENGTH") {
- length_time = message_list[1].toDouble();//返回的是秒为单位
- }
- else if (message_list[0] == "ANS_PERCENT_POSITION") { //返回当前歌曲的播放进度,单位是百分比 0-100
- value = message_list[1].toInt();
- //qDebug()<<value;
- music_Slider->setValue(value);
- if(value == 99){ //调试出有些歌不会到100,那就设置为99
- pause_button->setIcon(QIcon(":/pic/pause.png")); //播放完毕,设置为暂停图标
- next_clicked();
- }
- }
- }
- }
-
- void MainWindow::getPosTime_timeout()
- {
- if(play_flag == true){
- process->write("get_time_length\n");
- process->write("get_time_pos\n");
- process->write("get_percent_pos\n");
- }
- }
-
- void MainWindow::pause_clicked()
- {
- process->write("pause\n");
- if(play_flag == true){
- timer_cd->stop();
- pause_button->setIcon(QIcon(":/images/btn_play.png"));
- play_flag = false;
- }
- else if(play_flag == false){
- timer_cd->start();
- pause_button->setIcon(QIcon(":/images/btn_pause.png"));
- play_flag = true;
- }
-
- }
-
- void MainWindow::prev_clicked()
- {
- /*timer_getPosTime->stop();
- timer_getPosTime->start(900);
- music_Slider->setValue(0);*/
- int n;
- play_flag = true;
- pause_button->setIcon(QIcon(":/images/btn_pause.png"));
- if(circle_play == false){
- qsrand(time(NULL));
- n = qrand() % songList->count();
- }
- process->close();
- int curRow = 0;
- curRow = songList->currentRow();
- if(curRow-1 >= 0 ){
- songList->setCurrentRow(curRow-1);
- }else {
- songList->setCurrentRow(songList->count()-1);
- }
- curRow = songList->currentRow();
- if(circle_play == false){
- curRow = n;
- //qDebug()<<curRow;
- }
- //qDebug()<<songFilelist[curRow].filePath();
- QString cmd = QString("mplayer -quiet -slave %1").arg(songFilelist[curRow].filePath());
- songList->setCurrentRow(curRow);
- QString tmpname = songFilelist[curRow].fileName();
- QStringList list = tmpname.split(".");
- QString soundname = list[0];
- lable_SongTitle->setText(soundname);
- process->start(cmd);
- }
-
- void MainWindow::next_clicked()
- {
- /*timer_getPosTime->stop();
- timer_getPosTime->start(900);
- music_Slider->setValue(0);*/
- int n;
- play_flag = true;
- pause_button->setIcon(QIcon(":/images/btn_pause.png"));
- if(circle_play == false){
- qsrand(time(NULL));
- n = qrand() % songList->count();
- }
- process->close();
- int curRow = 0;
- curRow = songList->currentRow();
- if(curRow+1 < songList->count()){
- songList->setCurrentRow(curRow+1);
- }else {
- songList->setCurrentRow(0);
- }
- curRow = songList->currentRow();
- if(circle_play == false){
- curRow = n;
- //qDebug()<<curRow;
- }
- //qDebug()<<song_info_list[curRow].filePath();
- QString cmd = QString("mplayer -quiet -slave %1").arg(songFilelist[curRow].filePath());
- songList->setCurrentRow(curRow);
- QString tmpname = songFilelist[curRow].fileName();
- QStringList list = tmpname.split(".");
- QString soundname = list[0];
- lable_SongTitle->setText(soundname);
- process->start(cmd);
- }
- /*
- void MainWindow::exit_clicked()
- {
- process->close();
- exit(0);
- }
- */
- void MainWindow::musicSlide_slot(int value)
- {
- QString msg = "seek "+QString::number(value)+" 1\n";
- QByteArray ba = msg.toLatin1();
- process->write(ba.data());
- }
-
- void MainWindow::volumeSlide_slot(int value)
- {
- timer_vol->stop();
- QString msg = QString("volume %1 1\n").arg(value);
- QByteArray ba = msg.toLatin1();
- process->write(ba.data());
- timer_vol->start(5000);
- }
-
- void MainWindow::volume_clicked()
- {
- volume_Slider->setVisible(true);
- timer_vol->start(5000);//停留5秒
- }
-
- void MainWindow::volume_timeout()
- {
- timer_vol->stop();
- volume_Slider->setVisible(false);
- }
-
- void MainWindow::QListWidget_init()
- {
-
- scanSong();
-
- QListWidgetItem *item ;
- for (int i = 0; i < songFilelist.size(); ++i) {
- //songList->addItem(QFileInfo(List[i]).fileName());//将(歌曲)List用addItem函数加入到songList里
- songList->addItem(songFilelist[i].fileName());
-
- item = songList->item(i);
- item->setSizeHint(QSize(40,40));
- item->setForeground(Qt::white);
- item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);
-
- }
-
- }
- void MainWindow::songList_itemClicked()
- {
- play_flag = true;
- if(play_flag == true){
- pause_button->setIcon(QIcon(":/images/btn_pause.png"));
- timer_cd->start(1000);
- }
- process->close();
- int clickline = 0;
- clickline = songList->currentRow();
- //qDebug() <<clickline;
- QString tmpname = songFilelist[clickline].fileName();
- QStringList list = tmpname.split(".");
- QString soundname = list[0];
- lable_SongTitle->setText(soundname);
-
- QString path = songFilelist[clickline].filePath(); //绝对路径
- //qDebug() <<path;
- QString cmd = QString("mplayer -quiet -slave %1").arg(path);
- process->start(cmd);
- }
-
- void MainWindow::scanSong()
- {
- QDir dir("/home/jdr/mp3");//指定需要扫描歌曲目录的路径
- if (dir.exists()) {
- QStringList filter;
- filter << "*.mp3"
- << "*.wav"; // 包含所有.mp3 .wav后缀的文件
- songFilelist = dir.entryInfoList(filter, QDir::Files); // 获得目录下的所有.mp3 .wav后缀的文件
- }
- }
-
- void MainWindow::addfile_clicked()
- {
- //getOpenFileNames括号里的参数分别是:指定父类、标题、默认打开后显示的目录、文件过滤器
- QStringList newFileList = QFileDialog::getOpenFileNames(
- this,
- "Select files to add",
- "/home/jdr/mp3",
- "Images (*.mp3 *.wav)");
- //将选中的文件追加
- for (int i=0;i<newFileList.size();++i){
- if(!songFilelist.contains(newFileList[i])){ //防止重复添加
- songFilelist.append(newFileList[i]);
- songList->addItem(QFileInfo(newFileList[i]).fileName());
- }
- }
- }
- void MainWindow::favorite_clicked()
- {
- if(favorite_flag == false){
- favorite_button->setIcon(QIcon(":/images/btn_favorite_yes.png"));
- favorite_flag = true;
- }else {
- favorite_button->setIcon(QIcon(":/images/btn_favorite_no.png"));
- favorite_flag = false;
- }
-
- }
-
- void MainWindow::listcircle_clicked()
- {
- if(circle_play == true){
- listcircle_button->setIcon(QIcon(":/images/random.png"));
- circle_play = false;
- }else {
- listcircle_button->setIcon(QIcon(":/images/btn_listcircle.png"));
- circle_play = true;
- }
- }
-
- void MainWindow::menu_clicked()
- {
- if(menu_flag == false){
- songList->setVisible(true);
- addfile_button->setVisible(true);
- menu_flag = true;
- }else {
- songList->setVisible(false);
- addfile_button->setVisible(false);
- menu_flag = false;
- }
- }
- void MainWindow::cd_timeout()
- {
-
- i++;
- if(i == 9) i=1;
- QString cd = QString("border-image: url(:/images/cd%1.png);").arg(i);
- label_cd->setStyleSheet(cd);
- /*
- * 原本想下面这方式旋转,画面会出问题,后面来研究
- if(i > 360){
- i=0;
- }
- i +=10;
- QMatrix matrix;
- matrix.rotate(i);
- label_cd->setPixmap(QPixmap(":/images/cd.png").transformed(matrix, Qt::SmoothTransformation));
- */
- }
main.cpp
- #include "mainwindow.h"
-
- #include <QApplication>
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
-
- QFile file(":/style.qss");
- if (file.exists() ) {
- /* 以只读的方式打开 */
- file.open(QFile::ReadOnly);
- /* 以字符串的方式保存读出的结果 */
- QString styleSheet = QLatin1String(file.readAll());
- /* 设置全局样式 */
- qApp->setStyleSheet(styleSheet);
- /* 关闭文件 */
- file.close();
- }
-
- MainWindow w;
- w.show();
- return a.exec();
- }
style.qss
- QWidget {
- background: "#25242a"
- }
-
- QListWidget{
- background-color: rgba(255, 255, 255, 10%);
- outline:none;border-image:transparent
- }
- QListWidget::item:selected:active{
- background: rgb(0, 106, 181);
- }
-
- QListWidget::item:hover:active{
- background: qlineargradient(spread:repeat, x2:0, y2:1, x2:1, y2:0, stop:0 #a1a112, stop:0.25 #a1a112, stop:0.5 #ba89dc, stop:1 #ba89dc);
- }
-
运行:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。