Mavzu: Dasturiy mahsulot ishlab chiqish masalasi tahlili va loyihalash Masalaning qo`yilishi



Download 110,59 Kb.
bet9/13
Sana07.09.2021
Hajmi110,59 Kb.
#167921
1   ...   5   6   7   8   9   10   11   12   13
Bog'liq
1-amaliy ish. Loyiha ishlab chiqish

widget.cpp


Pleyerni amalga oshirish uchun siz dastur oynasining sarlavha faylida e'lon qilingan QMediaPlayer, QMediaPlaylist va QStandardItemModel ob'ektlarini ishga tushirishingiz kerak. Konstruktorning birinchi yarmida jadvalning ko'rinishi pleylistni ko'rsatishga sozlangan, ikkinchi bo'limda pleerning o'zi sozlangan.

  1. Pleyer m_playlist (navigatsiya uchun) va m_player (boshlash / to'xtatib turish / to'xtatish uchun) ni boshqarish uyalariga ulangan tugmalar orqali boshqariladi.

  2. Joriy trekni o'zgartirganda pleer avtomatik ravishda o'zgartirishdan oldin o'qilgan trekni tugatadi va yangi trekni tinglashni boshlaydi.

  3. QMediaPlaylist-da jadvalda namoyish qilish uchun model mavjud emasligi sababli, biz QStandardItemModel sinfidan foydalanamiz, shuning uchun u erda ham, u erda ham fayllarga yo'llar to'g'risida ma'lumot qo'shishimiz kerak bo'ladi.

  4. #include "widget.h"

  5. #include "ui_widget.h"

  6. #include

  7. #include

  8.  

  9. Widget::Widget(QWidget *parent) :

  10. QWidget(parent),

  11. ui(new Ui::Widget)

  12. {

  13. ui->setupUi(this);

  14. // Настройка таблицы плейлиста

  15. m_playListModel = new QStandardItemModel(this);

  16. ui->playlistView->setModel(m_playListModel); // Устанавливаем модель данных в TableView

  17. // Устанавливаем заголовки таблицы

  18. m_playListModel->setHorizontalHeaderLabels(QStringList() << tr("Audio Track")

  19. << tr("File Path"));

  20. ui->playlistView->hideColumn(1); // Скрываем колонку, в которой хранится путь к файлу

  21. ui->playlistView->verticalHeader()->setVisible(false); // Скрываем нумерацию строк

  22. ui->playlistView->setSelectionBehavior(QAbstractItemView::SelectRows); // Включаем выделение строк

  23. ui->playlistView->setSelectionMode(QAbstractItemView::SingleSelection); // Разрешаем выделять только одну строку

  24. ui->playlistView->setEditTriggers(QAbstractItemView::NoEditTriggers); // Отключаем редактирование

  25. // Включаем подгонку размера последней видимой колонки к ширине TableView

  26. ui->playlistView->horizontalHeader()->setStretchLastSection(true);

  27.  

  28. m_player = new QMediaPlayer(this); // Инициализируем плеер

  29. m_playlist = new QMediaPlaylist(m_player); // Инициализируем плейлист

  30. m_player->setPlaylist(m_playlist); // Устанавливаем плейлист в плеер

  31. m_player->setVolume(70); // Устанавливаем громкость воспроизведения треков

  32. m_playlist->setPlaybackMode(QMediaPlaylist::Loop); // Устанавливаем циклический режим проигрывания плейлиста

  33.  

  34. // подключаем кнопки управления к слотам управления

  35. // Здесь отметим, что навигация по плейлисту осуществляется именно через плейлист

  36. // а запуск/пауза/остановка через сам плеер

  37. connect(ui->btn_previous, &QToolButton::clicked, m_playlist, &QMediaPlaylist::previous);

  38. connect(ui->btn_next, &QToolButton::clicked, m_playlist, &QMediaPlaylist::next);

  39. connect(ui->btn_play, &QToolButton::clicked, m_player, &QMediaPlayer::play);

  40. connect(ui->btn_pause, &QToolButton::clicked, m_player, &QMediaPlayer::pause);

  41. connect(ui->btn_stop, &QToolButton::clicked, m_player, &QMediaPlayer::stop);

  42.  

  43. // При даблклике по треку в таблице устанавливаем трек в плейлисте

  44. connect(ui->playlistView, &QTableView::doubleClicked, [this](const QModelIndex &index){

  45. m_playlist->setCurrentIndex(index.row());

  46. });

  47.  

  48. // при изменении индекса текущего трека в плейлисте, устанавливаем название файла в специальном лейбле

  49. connect(m_playlist, &QMediaPlaylist::currentIndexChanged, [this](int index){

  50. ui->currentTrack->setText(m_playListModel->data(m_playListModel->index(index, 0)).toString());

  51. });

  52. }

  53.  

  54. Widget::~Widget()

  55. {

  56. delete ui;

  57. delete m_playListModel;

  58. delete m_playlist;

  59. delete m_player;

  60. }

  61.  

  62. void Widget::on_btn_add_clicked()

  63. {

  64. // С помощью диалога выбора файлов делаем множественный выбор mp3 файлов

  65. QStringList files = QFileDialog::getOpenFileNames(this,

  66. tr("Open files"),

  67. QString(),

  68. tr("Audio Files (*.mp3)"));

  69.  

  70. // Далее устанавливаем данные по именам и пути к файлам

  71. // playlist va playlist jadvallari

  72. foreach (QString filePath, files) {

  73. QList items;

  74. items.append(new QStandardItem(QDir(filePath).dirName()));

  75. items.append(new QStandardItem(filePath));

  76. m_playListModel->appendRow(items);

  77. m_playlist->addMedia(QUrl(filePath));

  78. }

  79. }


Download 110,59 Kb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   13




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2022
ma'muriyatiga murojaat qiling

    Bosh sahifa
davlat universiteti
axborot texnologiyalari
ta’lim vazirligi
zbekiston respublikasi
maxsus ta’lim
O’zbekiston respublikasi
nomidagi toshkent
guruh talabasi
o’rta maxsus
toshkent axborot
texnologiyalari universiteti
xorazmiy nomidagi
davlat pedagogika
rivojlantirish vazirligi
pedagogika instituti
vazirligi muhammad
haqida tushuncha
kommunikatsiyalarini rivojlantirish
respublikasi axborot
toshkent davlat
tashkil etish
vazirligi toshkent
Toshkent davlat
bilan ishlash
O'zbekiston respublikasi
matematika fakulteti
Ishdan maqsad
o’rta ta’lim
ta’limi vazirligi
fanining predmeti
saqlash vazirligi
moliya instituti
haqida umumiy
pedagogika universiteti
fanlar fakulteti
fanidan tayyorlagan
umumiy o’rta
samarqand davlat
ishlab chiqarish
fanidan mustaqil
Toshkent axborot
universiteti fizika
fizika matematika
uzbekistan coronavirus
Darsning maqsadi
sinflar uchun
Buxoro davlat
coronavirus covid
Samarqand davlat
koronavirus covid
sog'liqni saqlash